java - JSF,如何在不同的页面/支持 bean 中设置属性,然后导航到该页面?

标签 java jsf

我正在使用 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/

相关文章:

jsf - 重定向后保留 JSF 消息

java - Spring 数据存储库的问题

Java: `iterator.remove` 抛出 IllegalStateException

java - Web 应用程序和多线程

java - 读取 war 文件中的文本文件

java - JSF 语言环境异常

jsf - Primefaces - 在多文件上传组件中按字母顺序获取文件

java - 如何在带有Grid View的 fragment 中使用自定义适配器摆脱“java.lang.NullPointerException”?

java - 如何用Java中预先编写的方法抛出我自己的异常?

java - 如何使输出文本属性值成为超链接?