我正在使用JSF 2.0并尝试在我的应用程序中的不同页面之间传递值。
设置如下: 我有一个名为userSelect的页面,它有一个支持bean userSelectBacking。在此页面上,我显示了一个可以选择并使用h:commandbutton提交的用户列表,当页面提交时,导航将转到userEdit页面。
我有一个名为userEdit的页面,它有一个支持bean userEditBacking,它显示用户的信息 并允许该用户进行编辑。
我想将从userSelect页面中选择的用户传递到userEdit页面。 我目前正在使用f:setPropertyActionListener来设置userSelect页面中userddit支持的用户,但是当我导航到userEdit页面时,它会丢失我设置的信息。
有没有办法可以在两个页面/支持bean之间传递值?
感谢
答案 0 :(得分:1)
我目前正在使用f:setPropertyActionListener来设置userSelect页面中userddit支持的用户
它应该有用。
然而,当我导航到userEdit页面时,它会丢失我设置的信息。
如果数据加载逻辑错误,或者在bean请求作用域时发出重定向,则会发生这种情况。
要修复数据加载逻辑,只需确保在请求作用域bean的情况下,后续请求中保留相同的数据模型。通常你在getter中使用bean的构造函数或延迟加载。如果这不是一个选项,那么你需要将bean放在更广泛的范围内,例如@ViewScope
或@SessionScope
。
要解决重定向问题,要么只是不触发重定向(即从导航案例中删除<redirect/>
,要么不调用ExternalContext#redirect()
),或者将bean放在更广泛的范围内。 / p>