before-invokeApplication-phaselistenerで実行対象の管理対象ビーンへの参照を取得することはできますか?JSF 2:フェーズ・リスナー・オブジェクトのマネージドBeanのインスタンスへのアクセス?
アプリケーション起動フェーズの前に、どのmanagedBeanがメソッドを実行するのかを明確にする必要があります。
この例では、1 jsfページを処理する1つのメイン管理Beanがあるとします。
だから私は必要なもの基本的には次のとおりです。
- メニュー
- からのユーザーのアクセスプログラムそれは、メニューからアクセスしていますので、メインの管理Beanのinit()メソッドが用意ような原料を初期化するために呼び出されますデータは、認証チェックをやって
- 以降の提出は、ポイント#を実装するには、メニューから
を再アクセスされるまで、もうinit()メソッドを呼び出す必要がいけません2、フェーズの1つを傍受しようと考えています
フェーズの実装でマネージドBeanを取得することに関するAPIドキュメントをチェックしましたが、何も見つかりませんでした。
@PostConstructやマネージドBeanのコンストラクタでこれを行うことができたことがわかりましたが、初めてBeanが構築されたときにのみ行い、jsfが呼び出されるたびにメソッドを呼び出す必要があります。メニューからアクセスします。
提案がありますか?
よろしく、
アルバート・カム
多くのオプションがあります。ありがとうございました ! – bertie
アクションメソッドに含まれていたインスタンスを返す方法がわかりません。あなたのアプローチでは、あらかじめBeanの名前がわかっている必要があります。ちなみに、私は['Application#evaluateExpressionGet()'](http://download.oracle.com/javaee/6/api/javax/faces/application/Application.html#evaluateExpressionGet%28javax.faces.context .FacesContext、%20java.lang.String、%20java.lang.Class%29)は 'ELResolver/ELContext'の代わりに省略しています。 [この回答](http://stackoverflow.com/questions/2633112/jsf-get-managed-bean-by-name)も参照してください。 – BalusC
まあ、フェーズ・リスナーがbefore invokeアプリケーション・フェーズでリスニングしている場合、フェーズ・リスナーはオブジェクト・インスタンスをインスタンス化します。この同じインスタンスは、マネージド・ビー・ビーがまだスコープ内にある(同じ要求)ため、アプリケーション・メソッド(アプリケーション・フェーズの呼び出し中に呼び出される)で参照されます。私はそれを行う方法の問題に答えましたが、私はそれを最良の解決策として主張していません。最終目標を達成するのに適した代替案を提供しました。 –