使用jsf托管bean

时间:2015-12-18 18:12:54

标签: jsf-2.2 managed-bean

我的网站有一个带有数据表的页面。该数据表有一个名为“编辑”的按钮,用户可以单击该按钮编辑单行数据。当用户点击它时,他会被重定向到另一个页面,其中将显示所选项目的数据供他编辑。

我现在使用的方法是使用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>

这样做的更好方法是什么?

谢谢。

1 个答案:

答案 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