【发布时间】:2011-04-04 22:59:29
【问题描述】:
我使用 JSF 已经有一段时间了,但有些事情一直让我感到困惑。希望有人可以提供帮助。
简单的例子,有一个页面显示了一个“Person”表格,当您单击“Person”名称时,它会将您带到一个页面以查看“Person”的详细信息。
通常,我会这样实现 personSearch.jsf 页面:
<h:dataTable value="#{personHandler.persons}" var="person">
<h:column>
<h:commandLink action="#{personHandler.show( person.id )}" >
<h:outputText value="#{person.name}" />
</h:commandLink>
</h:column>
</h:dataTable>
我实现了一个这样的 personView.jsf 页面:
<h:panelGrid columns="2">
<h:outputText value="Person ID:" />
<h:outputText value="#{personHandler.selectedPerson.id}" />
<h:outputText value="Person Name:" />
<h:outputText value="#{personHandler.selectedPerson.name}" />
</h:panelGrid>
PersonHandler.show(Integer personId) 设置 personHandler.selectedPerson 然后重定向到 personView 页面。
当 PersonHandler 是会话 bean 时,这一切都可以正常工作。但我更喜欢它是一个请求范围的 bean,因为用户可能打开了多个窗口,我不希望每个会话只有一个选定的人。
所以我的问题是,执行此 JSF 的“正确”方法是什么?我曾经能够在 personHandler 上使用 a4j:keepAlive 来获得我想要的东西,但这总是让人觉得很麻烦。再说一次,这是我对 JSF 从来没有理解过的地方。
非常感谢任何帮助! 抢
【问题讨论】:
标签: jsf