我有一个名为
我还有另一个托管Bean,名为
在搜索结果表中,用户名是一个链接,当单击时,应该在
UserSearchHandler
的托管Bean,它有一个doSearch
方法,该方法填充了UserSearchHandler.searchResults
,这些结果在userSearch.xhtml
页面上以表格形式显示。我还有另一个托管Bean,名为
UserHandler
,它有一个showUser
方法等等。在搜索结果表中,用户名是一个链接,当单击时,应该在
userView.xhtml
页面上显示用户详细信息。表格和链接如下所示:<p:dataTable var="user" value="#{userSearchHandler.searchResults" >
// ... and so on ... then
<h:commandLink value="#{user.firstName}" action="#{userHandler.showUser}">
<f:setPropertyActionListener target="#{userHandler.userIdToShow}" value="#{profile.id}"/>
</h:commandLink>
当托管的 bean 被设置为 session
作用域时,一切都正常运行。
但是,当我将 bean 的作用域更改为 request
时,搜索功能可以正常工作并填充表格,但是当我单击名称链接时,没有任何反应。我在 userSearchHandler
被设置为 "request" 作用域时,在 userHandler.showUser
方法上放置了一个断点,但它从未被触发。
有没有人能够帮忙解释为什么会出现这种情况,或者我做错了什么?
UserService
似乎也是一个JavaBean,因此它确实需要被序列化。这只是按照契约来的。 - BalusCt:saveState
也需要bean可序列化...(请参见早期评论)。如果会话范围或可序列化确实不是选项,那么您必须在bean的构造函数或@PostConstruct
中根据这些参数调整请求参数并准备数据模型。 - BalusC