Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jsf 2 HttpSessionListener中是否有faces上下文?_Jsf 2_Servlet Listeners - Fatal编程技术网

Jsf 2 HttpSessionListener中是否有faces上下文?

Jsf 2 HttpSessionListener中是否有faces上下文?,jsf-2,servlet-listeners,Jsf 2,Servlet Listeners,我试图在我的应用程序中从HttpSessionListener运行以下代码。但我看到会话id的不同输出。会话初始化侦听器在启动jsf应用程序时默认触发 @Override public void sessionCreated(HttpSessionEvent se) { FacesContext fc=FacesContext.getCurrentInstance(); System.out.println("session id01-->"+se.

我试图在我的应用程序中从HttpSessionListener运行以下代码。但我看到会话id的不同输出。会话初始化侦听器在启动jsf应用程序时默认触发

@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。 第二个是打印空

为什么即使创建了会话,faces上下文仍将会话返回为null

问候,,
-Vissu Adusumalli.

由于
fc.getExternalContext()
不会抛出NPE,因此FacesContext可用。为什么来自
ServletContext
(外部上下文是ishat,而不是JSF)的会话为空是另一个问题。它可能还没有设置

在创建新的HTTP会话时调用
HttpSessionListener
。但是,faces上下文从中获取会话。如果会话刚刚创建,它可能仍然没有链接到当前请求。它不会抛出NPE,但我看不到faces上下文中的会话,即使会话已创建并且我在sessioncreated()方法中。那么?在sessioncreated方法中并不意味着它已经在servletcontext中设置好了。我的答案从你的题目回答了你的问题