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標記,但完整的代碼總是更好。但是這個代碼真的完成了嗎?有其他地方我們應該查找嗎? –