1
我正在使用JSF 2.2,并且需要使用EL表达式来获取托管bean的实例。我正在使用下面的代码创建托管bean的实例,如果它尚未创建。如果这个bean已经被创建并且在内存中(任何作用域变量,比如session,request,..),它将返回这个被管理bean的实例而不会创建一个新的bean。 我的要求是,如果bean尚未创建,那么它应该返回null而不是创建一个新的实例。如果它已经被创建,那么它应该返回该实例。但是下面的代码,如果它不存在,最终会创建一个。 希望我清楚。JSF 2.2中的EL表达式
public static MyManagedBean getMyManagedBean() {
MyManagedBean bean = (MyManagedBean) getFacesContext().getApplication().getExpressionFactory().createValueExpression(getELContext(),
"#{MyManagedBean}",
MyManagedBean .class).getValue(FacesContext.getCurrentInstance().getELContext());
return bean;
}
谢谢您的答复。我会试试这个。 – dontnetnewbie
请注意,这不适用于CDI托管的bean。 – BalusC
@BalusC我完成了与CDI托管bean一起工作的代码。我忽略了这个部分,因为问题仅用JSF标记,但完整的代码总是更好。但是这个代码真的完成了吗?有其他地方我们应该查找吗? –