我正在使用 JSF 2.0 并尝试在我的应用程序中的不同页面之间传递值。
设置如下: 我有一个名为 userSelect 的页面,它有一个支持 bean userSelectBacking。在此页面上,我显示了可以选择并使用 h:command 按钮提交的用户列表,当页面提交时,导航将转到用户编辑页面。
我有一个名为 userEdit 的页面,它有一个支持 bean userEditBacking,用于显示用户的信息 并允许编辑该用户。
我想将从 userSelect 页面选择的用户传递到 userEdit 页面。 我目前正在使用 f:setPropertyActionListener 从 userSelect 页面在 userEdit 支持中设置用户,但是当我导航到 userEdit 页面时,它会丢失我设置的信息。
有没有办法可以在两个页面/支持 bean 之间传递值?
谢谢
最佳答案
I am currently using f:setPropertyActionListener to set the user in my userEdit backing from the userSelect page
应该可以。
however when I navigate to the userEdit page, it loses the information I set.
如果数据加载逻辑错误,或者在 bean 处于请求范围内时触发重定向,就会发生这种情况。
要修复数据加载逻辑,只需确保在请求作用域 bean 的情况下,在后续请求中保留相同的数据模型。通常,您可以使用 bean 的构造函数或 getter 中的延迟加载来实现此目的。如果这不是一个选项,那么您需要将 bean 放在更广泛的范围内,例如@ViewScope
或@SessionScope
.
要解决重定向问题,要么不触发重定向(即从导航案例中删除 <redirect/>
,或者不调用 ExternalContext#redirect()
),要么将 bean 放在更广泛的范围内。
关于java - JSF,如何在不同的页面/支持 bean 中设置属性,然后导航到该页面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2699583/