HttpSessionListener中是否可以使用面部上下文?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HttpSessionListener中是否可以使用面部上下文?相关的知识,希望对你有一定的参考价值。

我试图在我的应用程序中从HttpSessionListener运行下面的代码。但是我看到会话id.Session的不同输出。当我启动我的jsf应用程序时默认触发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。

为什么face context会将会话返回为null,即使会话已创建?

此致, - 当然Adusumalli。

答案

由于fc.getExternalContext()不会抛出NPE,因此可以使用FacesContext。为什么来自ServletContext的会话(即外部上下文,而不是JSF的东西)为null是一个不同的问题。它可能还没有完成

以上是关于HttpSessionListener中是否可以使用面部上下文?的主要内容,如果未能解决你的问题,请参考以下文章

JavaWeb(十八):HttpSessionListener接口

SpringBoot中HttpSessionListener的简单使用

SpringBoot中HttpSessionListener的简单使用

Session监听类HttpSessionListener介绍及在listener里取得request

JAVA框架如何实现调用接口的实现类的呢?例实现httpsessionlistener接口类被调。

javaweb系列-关于HttpSessionListener的sessionDestroyed什么时候触发