java - 在 View 之间传递对象

标签 java jsf jsf-2

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

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

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

这会在 view1 上创建一个 view2Bean,但在查看 view2 时它不再存在。因此,view2Bean.myObjectnull,因为该属性从未在 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/

相关文章:

jsf-2 - 动态渲染 - 无法找到具有 clientId 的组件

java - SystemSecurityManager 默认做什么?

jsf - 无法从 jsf-resource-library 找到或提供本地化资源

jsf - Tomcat 8(和 9)强制行为,空字符串被错误地设置为空字符串

jsf-2 - Primefaces 4.0 p :selectOneMenu valueChangeListener

java - 带有 @ManyToMany 和自定义转换器的 JSF 和 JPA : LazyInitializationException

java - Android:需要在自定义适配器 ListView 中保存复选框状态

java - 使用 Jersey 测试框架时 Servlet 上下文注入(inject)失败

java - Mockito 在 stub 时从父类(super class)调用真实方法

jsf - 如何制作JSF复合组件的网格?