JSFには、サーバーの起動時に一度だけ実行されるように、次の初期化スニペットを入れるための適切な場所がありますか?JSFに初期化コードを配置する適切な場所はありますか?
1. ExternalContext extContext = FacesContext.getCurrentInstance().getExternalContext();
2. HttpSession sesion = (HttpSession)extContext.getSession(true);
3. String parA = extContext.getInitParameter("parA");
4. String parB = someCalculations(parA);
5. sesion.setAttribute("parB", parB);
は基本的に私は、web.xmlのコンテキストのparamセクションからパラメータPARAを読んでいくつかの変換をしたい、と(新しいPARBパラメータとして)セッションに含めます。
PostConstructApplicationEventとeager = trueのテクニックは、セッションがこの時点(行4)でnullなので機能しません。 FacesContextが利用できないため、ServletContextListenerの手法が機能しません。
ありがとうございます!
セッションごとにではなく、起動時に1回実行してもよろしいですか?セッション属性を設定しています。 – mrembisz
はい、起動ごとに1回実行します。セッションを忘れた場合、新しいパラメータparBはどこに置くことができますか?つまり、setInitParameter( "parB"、parB)のようなものです。 – webmeiker
どのコードにアクセスする必要があるかによって異なります。 JSF Beanの場合、マネージドBeanは適切な選択肢のように思えます。おそらくアプリケーションスコープです。 – mrembisz