繼續執行我的previous question,我試圖在應用程序的會話第一次啓動時初始化會話範圍的JSF bean,因此無論哪個頁面他們首先訪問我的Web應用程序。我的自定義偵聽器:初始化HttpSessionListener中的JSF SessionScoped bean時出現StackOverflow錯誤
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());
}
}
}
但是,這給我一個堆棧溢出錯誤。看起來,SessionMap
類中的put()
方法嘗試創建新的HttpSession
,從而導致與我的偵聽器發生無限循環。當我的應用程序會話第一次啓動時,如何初始化一個JSF會話範圍的bean,而不會遇到這個問題?
我在Spring 7上使用JSF 2,運行在WebSphere 7上。
謝謝!