我打算在Tomcat中使用一个*.xhtml
页面和一些JSF Managed Beans。我想要的所有豆子都是ViewScoped
。我需要将一些数据(通常是一个简单的POJO)从一个bean传递给另一个bean,但是......
@managedProperty
不起作用。
findBean("someBean")
- 未知标识符。
FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("sessionBean");
- 适用于SessionScoped
个bean。什么是ViewScoped
?
出于安全原因,我不想通过GET
参数传递整数标识符。
理论上,我可以使用SessionScoped
bean来传输数据,但这是最好的解决方案吗?
是否有任何方法可以从一个ViewScoped bean访问另一个像FacesContext.getCurrentInstance()...
?
我想,所有ViewScoped
bean一次实例化,并且生命周期相同。我是对的吗?
感谢您浪费时间陪伴我。
答案 0 :(得分:1)
你走了:
@ManagedBean
@ViewScoped
public class MyBean implements Serializable {
@ManagedProperty("#{otherBean}")
private OtherBean otherBean;
}
@ManagedBean
@ViewScoped
public class OtherBean implements Serializable {
}
从viewMap获取bean可能会起作用,但它很难看,你不能/不应该这样做到类字段。
答案 1 :(得分:0)
我找到了它!
FacesContext.getCurrentInstance().getViewRoot().getViewMap().get("beanName")
效果很好。