如何从一个ViewScoped bean访问另一个?

时间:2014-02-11 13:45:33

标签: java-ee tomcat jsf-2

我打算在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一次实例化,并且生命周期相同。我是对的吗?

感谢您浪费时间陪伴我。

2 个答案:

答案 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")效果很好。