前の質問に続きますが、アプリケーションのセッションが最初に開始されたときに、セッション スコープの JSF Bean を初期化しようとしています。そのため、Web アプリケーションで最初にアクセスしたページに関係なく、ユーザーは Bean を使用できます。私のカスタムリスナー:
public class MyHttpSessionListener implements HttpSessionListener {
@Override
public void sessionCreated(HttpSessionEvent se) {
if (FacesContext.getCurrentInstance().getExternalContext().getSessionMap()
.get("mySessionBean") == null) {
FacesContext.getCurrentInstance().getExternalContext().getSessionMap()
.put("mySessionBean", new MySessionBean());
}
}
}
ただし、これによりスタック オーバーフロー エラーが発生します。put()
クラスのメソッドがSessionMap
新しい を作成しようとしているように見えるHttpSession
ため、リスナーで無限ループが発生します。アプリケーションのセッションが最初に開始されたときに、この問題に遭遇することなく JSF セッション スコープ Bean を初期化するにはどうすればよいですか?
WebSphere 7で実行されているSpring 3でJSF 2を使用しています。
ありがとう!