我试图在HttpSessionListener的应用程序中的代码下运行,但是我看到了会话ID的不同输出。默认情况下,当我启动jsf应用程序时会触发Session Init Listener。
@Override
public void sessionCreated(HttpSessionEvent se) {
FacesContext fc=FacesContext.getCurrentInstance();
System.out.println("session id01-->"+se.getSession().getId());
HttpSession session= ((HttpServletRequest) fc.getExternalContext().getRequest()).getSession(false);
System.out.println("httpSessionId-->" + (session!=null?session.getId():""));
}
第一个sysout打印会话ID。 第二个是打印null。
为什么即使创建了会话,faces上下文仍将会话返回为null?
关于, -Vissu Adusumalli。
答案 0 :(得分:0)
由于fc.getExternalContext()
未引发NPE,因此FacesContext 可用。为什么来自ServletContext
的会话(即外部上下文不是JSF事物)为null是另一个问题。可能只是尚未设置