我的网站有一个带有数据表的页面。该数据表有一个名为“编辑”的按钮,用户可以单击该按钮编辑单行数据。当用户点击它时,他会被重定向到另一个页面,其中将显示所选项目的数据供他编辑。
我现在使用的方法是使用SessionScoped bean,我可以在其中保留selectedItem变量的值。但是,在这里使用SessionScoped感觉很糟糕。
简化代码:
<h:form>
<p:dataTable id="dataTable" var="item" value="#{exampleController.itens}">
<p:column headerText="Name">
<h:outputText value="#{item.name}" />
</p:column>
<p:column>
<p:commandLink title="Edit" action="/pages/anotherPage?faces-redirect=true">
<f:setPropertyActionListener value="#{item}" target="#exampleController.selectedItem}" />
</p:commandLink>
</p:column>
</p:dataTable>
</h:form>
这样做的更好方法是什么?
谢谢。
答案 0 :(得分:0)
你应该尝试查看params,这样你就赢了两件事:
要做到这一点,您需要在行动中:
<p:commandLink title="Edit" action="/pages/anotherPage?faces-redirect=true">
<f:param name="foo" value="#{item}"/>
</p:commandLink>
在您的编辑视图中:
<f:metadata>
<f:viewParam name="foo" value="#{viewBean.item}"/>
</f:metadata>
更多信息与伟大的Balus Balus - Communication in JSF