2011-06-24 5 views
0

最近、JSF 1.2から2.1にアップグレードしました。今、私たちが持っている唯一の問題は、我々は他の裏にアクセスできないことです のMyFaces 2.1.1 EL-API-2.2サーブレット2.4でJSF2.1の別のマネージドBeanにアクセス

:私たちは、私たちは、以下のライブラリを使用しているサーブレット2.4

を持っているのWebSphere 6.1上で実行されています

public static Object getBackingBean(String pName) { 
    ELContext elContext = FacesContext.getCurrentInstance().getELContext(); 
    Object ret = elContext.getELResolver().getValue(elContext, null, pName); 
    return ret; 
} 

これは以前と同じです。これは常にnullを返します。 私たちもまた試してみました:

Beanclass bean = (Beanclass) FacesContext.getCurrentInstance().getApplication() 
.getELResolver().getValue(elContext, null, "beanclass"); 

また、nullを返します。

私は@ManagedPropertyアノテーションを試しましたが、これは明らかにServlet 2.5の機能です。 ELContextがデフォルトでDIを使用する可能性はありますか? JSF2.1とServlet 2.4で別のバッキングBeanのインスタンスを取得する方法はありますか?ありがとう!あなたはthe MyFaces webpage上で読むことができるよう

答えて

1

JSF 2.1は、Java 1.5以降、JSP 2.1、JSTL 1.2とJavaサーブレット2.5実装が必要です。

0

公式にはJSF 2.1が必要ですが、理論的にはJSP 2.0でMyFaces Core 2.1を実行することは可能です。 MyFaces Core 1.2.xでアプリケーションを実行することができれば、それがなぜ実行できないのかという技術的理由がないため、2.1でそれを行うことができます。 MyFaces Users Listにお尋ねください。私は小切手をして、WebSphere 6.1で1.2.xアプリケーションを実行するユーザーがいるので、多分あなたはそこで運が良ければよいかもしれません。

+0

ありがとうございます - 私はMyFacesユーザーリスト – toby

2

サーブレット2.5が必要な場合でも、私の自身の質問に従うだけで、私の仕事はそれなしで達成できます。ここでは、セッションBeanのインスタンスを確実に取得する方法を示します。

BeanClass beanInst = (BeanClass) JSF2Util.findBean("beanClass"); 

public static <T> T findBean(String beanName) { 
    FacesContext facesContext = FacesContext.getCurrentInstance(); 
    Application app = facesContext.getApplication(); 
    ExpressionFactory elFactory = app.getExpressionFactory(); 
    ELContext elContext = facesContext.getELContext(); 
    ValueExpression valueExp = elFactory.createValueExpression(elContext, "#{" + beanName + "}",Object.class); 
    return (T) valueExp.getValue(elContext); 
} 
関連する問題