0

在 JSF 2 中,您可以传递 ids、Strings 其他可以作为请求参数发送的东西f:viewParam@ManagedProperty(即在此处讨论)。

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

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

这会view2Bean在 view1 上创建一个,在查看 view2 时它不再存在。所以,view2Bean.myObjectnull,因为该属性从未在 的特定实例上设置过view2bean

我考虑过使用 Flash 范围,这似乎正是用于此目的的工具。但是,我在某处读到 BalusC,说它在我正在使用的 Mojarra 中损坏了。

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

4

1 回答 1

1

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

您可以将对象的唯一 ID 作为参数传递给下一个视图,并将 a 附加Converter<f:viewParam>.

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

我考虑过使用 Flash 范围,这似乎正是用于此目的的工具。但是,我在某处读到 BalusC,说它在我正在使用的 Mojarra 中损坏了。

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

于 2012-06-15T12:54:44.373 回答