使用 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>
执行此操作的更好方法是什么?
谢谢。
你应该尝试查看参数,这样你就赢得了两件事:
- 你的 url 变得友好,(有点像 http://localhost/view?param=value)
- 您可以删除丑陋的会话 bean
要做到这一点,您需要采取行动:
<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
我的站点有一个包含数据表的页面。该数据表有一个名为'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>
执行此操作的更好方法是什么?
谢谢。
你应该尝试查看参数,这样你就赢得了两件事:
- 你的 url 变得友好,(有点像 http://localhost/view?param=value)
- 您可以删除丑陋的会话 bean
要做到这一点,您需要采取行动:
<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