Faces上下文在HttpSessionListener中可用吗?

时间:2018-09-05 13:47:58

标签: jsf-2 servlet-listeners

我试图在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。

1 个答案:

答案 0 :(得分:0)

由于fc.getExternalContext()未引发NPE,因此FacesContext 可用。为什么来自ServletContext的会话(即外部上下文不是JSF事物)为null是另一个问题。可能只是尚未设置