2010-11-22 2 views
1

私は現在、JSF 2.0について学習しています.JSFページにアクセスするたびに、CDI Beanで何かを初期化する方法がわかりません。すべてのページへのJSF CDIの初期化アクセス

たとえば、私の場合、1つのJSFページで使用される1つのCDI Beanがあるとします。 Bean内のどこかで、何かを照会して初期化したり、ページにアクセスするたびに承認をチェックしたりします(アクションメソッドが呼び出されるたびにではありません)。

私はそれをBeanのコンストラクタに入れることができますが、jsfページの呼び出しごとにコンストラクタが呼び出されることはありませんか?またはJSFページで#{myBean.initialize()}を使用して呼び出す必要がありますか?

よろしく、 アルバート・カム

答えて

2

管理対象Beanをと宣言すると、HTTP要求ごとに作成されます(はい、JSFページにアクセスするたびにエンドユーザの言葉通りに作成されます)。 Beanのコンストラクタで初期化ジョブを実行するか、または@PostConstructメソッドで初期化ジョブを実行できます。これはCDIとは関係ありません。

ページがアクセスされるたびに(アクションメソッドが呼び出されるたびにではない)チェック認可。

このため、javax.servlet.Filterまたは非常に多分javax.faces.event.PhaseListenerの方がはるかに良い解決策です。

+0

チップをありがとう! – bertie

+0

ようこそ。 – BalusC

0

私は間違っていないよ場合は、コンストラクタが毎回ページが読み込まと呼ばれている - とすぐにJSFページにあなたのBeanを適用するように、そのオブジェクトが構築されます。したがって、パラメータを持たないコンストラクタが必要です

関連する問題