在视图之间传递对象

时间:2012-06-15 11:37:00

标签: java jsf jsf-2

在JSF 2中,您可以使用f:viewParam@ManagedProperty(即讨论here)传递ID,字符串可以作为请求参数发送的其他内容。

但是,我想传递视图之间的对象,从view1到view2。我的支持bean是@ViewScoped。我尝试过以下方法:

<f:setPropertyActionListener value="#{view1Bean.myObject}" target="#{view2Bean.myObject}" />

这会在view1上创建view2Bean,在查看view2时不再存在view2Bean.myObject。因此,nullview2bean,因为该属性从未在{{1}}的特定实例上设置。

我考虑使用Flash范围,这似乎正是这个工具。但是,我在某个地方读到了BalusC,说我在使用Mojarra时已经破了。

在视图之间传递对象的最佳方法是什么?

1 个答案:

答案 0 :(得分:1)

  

但是,我想传递视图之间的对象,从view1到view2。

您只需将对象的唯一ID作为参数传递到下一个视图,然后将Converter附加到<f:viewParam>

<f:viewParam name="id" value="#{bean.entity}" converter="entityConverter" />

  

我考虑使用Flash范围,这似乎正是这个工具。但是,我在某个地方读到了BalusC,说我在使用Mojarra时已经破了。

由于Flash cookie的工作方式,每当视图位于不同的路径(文件夹)时,当前的Mojarra版本才会失败。如果它们位于相同路径(文件夹)中,那么它应该可以正常工作。