我遇到了一个问题,我找不到一个简单易行的方法:
我使用不同的ManagedBeans来组织我的视图。有控制器管理动作并从/向持久层传递数据。此外,还有一些模型位于视图后面并包含其数据。
RequestScoped控制器初始化模型(-managedBean)并用数据填充它。 Model(-managedBeans)是SessionScoped。到目前为止效果很好。
但是如何在两个requestScoped控制器之间传递数据?
我的控制器初始化模型,当我想处理数据时,它总是消失,因为我的模型中的任何请求数据都被空对象重新填充。
我想扩展我的问题:我这样做就像Bozho已经发布的那样。但是我的'anotherBean'(就像他所说的那样)在一段时间后都是空的? JSF是否出于某些原因重新创建bean?
答案 0 :(得分:3)
您可以通过Map
envorinment访问requestscope FacesContext
。
FacesContext.getCurrentInstance().getExternalContext().getRequestMap()
你有一个Map,其中字符串是托管bean名称,Object是托管bean的实例。
我建议您this article关于JSF中的通信,由BalusC编写。
答案 1 :(得分:2)
@ManagedProperty(name = "#{anotherBean}")
private AnotherBean anotherBean;
答案 2 :(得分:0)
谢谢大家的答案,但我的错误在其他地方。
几周前,我尝试将PrimeFaces集成用于测试目的。我没有让它工作并删除它。但我忘了删除我的pom文件中的依赖项(对于maven)。从我的pom文件中删除PrimeFaces后,我的webapp工作流畅。
答案 3 :(得分:-1)
使用ViewScoped for ManagedBean而不是RequsetScope