Application#evaluateExpressionGet()代わりに使用してください。まだ完了していない場合は、Bean を作成します。
FacesContext context = FacesContext.getCurrentInstance();
Bean bean = (Bean) context.getApplication().evaluateExpressionGet(context, "#{bean}", Bean.class);
はマネージド"bean"Bean 名で、Bean.classは適切なバッキング Bean クラスです。
必要に応じて、これをヘルパー メソッドにまとめて、キャストが不要になるようにすることができます (JSF ボーイはジェネリックと のClassパラメーターを利用しませんでしたevaluateExpressionGet)。
public static <T> T findBean(String managedBeanName, Class<T> beanClass) {
FacesContext context = FacesContext.getCurrentInstance();
return beanClass.cast(context.getApplication().evaluateExpressionGet(context, "#{" + managedBeanName + "}", beanClass));
}
次のように使用できます。
Bean bean = findBean("bean", Bean.class);
または、タイプなしで、@SuppressWarnings:
@SuppressWarnings("unchecked")
public static <T> T findBean(String managedBeanName) {
FacesContext context = FacesContext.getCurrentInstance();
return (T) context.getApplication().evaluateExpressionGet(context, "#{" + managedBeanName + "}", Object.class);
}
次のように使用できます。
Bean bean = findBean("bean");
更新:上記はJSF 1.2固有のものです。JSF 1.1 以前の場合、現在非推奨 Application#createValueBinding()の を使用する方法は次のとおりです。
FacesContext context = FacesContext.getCurrentInstance();
Bean bean = (Bean) context.getApplication().createValueBinding("#{bean}").getValue(context);