在 JSF 2 中,您可以传递 ids、字符串以及其他可以使用 f:viewParam
或 @ManagedProperty
作为请求参数发送的内容(即讨论 here )。
但是,我想在 View 之间传递对象,从 view1 到 view2。我的支持 bean 是 @ViewScoped
。我尝试过以下方法:
<f:setPropertyActionListener value="#{view1Bean.myObject}" target="#{view2Bean.myObject}" />
这会在 view1 上创建一个 view2Bean
,但在查看 view2 时它不再存在。因此,view2Bean.myObject
为 null
,因为该属性从未在 view2bean
的特定实例上设置。
我考虑过使用 Flash 范围,它似乎正是用于此目的的工具。然而,我在某处读到 BalusC 说它在我正在使用的 Mojarra 中损坏了。
在 View 之间传递对象的最佳方式是什么?
最佳答案
However, I would like to pass around objects between views, from view1 to view2.
您可以将对象的唯一 ID 作为参数传递给下一个 View 并附加 Converter
到<f:viewParam>
.
<f:viewParam name="id" value="#{bean.entity}" converter="entityConverter" />
<小时/>
I considered using the Flash scope, which seems to be exactly the tool for this. However, I read BalusC somewhere saying that it is broken in Mojarra, which I'm using.
从当前的 Mojarra 版本开始,仅当 View 位于不同的路径(文件夹)中时,由于 Flash cookie 的工作方式,此操作才会失败。如果它们位于相同路径(文件夹)中,那么它应该可以正常工作。
关于java - 在 View 之间传递对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11049965/