使用 jsf 托管 bean 在两个不同的页面上保留变量值

Keeping a variable value on two different pages using jsf managed beans

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

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

执行此操作的更好方法是什么?

谢谢。

你应该尝试查看参数,这样你就赢得了两件事:

要做到这一点,您需要采取行动:

<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