Session 通过会话创建将数据存储到会话中
我需要将一些数据存储到用户会话中。通常我会使用Session 通过会话创建将数据存储到会话中,session,jsf-2,listener,Session,Jsf 2,Listener,我需要将一些数据存储到用户会话中。通常我会使用getSessionMap().put()来解决这个问题。我的问题是,我需要在sessionListener的sessionCreated()-void中执行此操作,但此时FacesContext仍然为空。因此,下面的代码生成一个NullPointerException @Override public void sessionCreated(HttpSessionEvent arg0) { FacesContext.
getSessionMap().put()
来解决这个问题。我的问题是,我需要在sessionListener的sessionCreated()
-void中执行此操作,但此时FacesContext仍然为空。因此,下面的代码生成一个NullPointerException
@Override
public void sessionCreated(HttpSessionEvent arg0) {
FacesContext.getCurrentInstance().getExternalContext().getSessionMap().put("data", "something");
}
是否有其他方法将数据存储到会话中,或者可以手动初始化FacesContext的实例?不幸的是,我对jsf生命周期知之甚少
谢谢你的帮助 您似乎完全忽略了一个事实,即JSF只是“普通”Servlet API上的一个大抽象层,而
ExternalContext
(请花所有时间仔细阅读其内容,包括)只是委托给“普通”Servlet API中可用的类/方法
在您的特定情况下,当您在Servlet API(而不是Portlet API)之上使用JSF时,ExternalContext\getSessionMap()
仅仅是/。猜猜看,HttpSession
位于HttpSessionListener
中,可通过HttpSessionEvent
参数随时获取
@Override
public void sessionCreated(HttpSessionEvent event) {
event.getSession().setAttribute("data", "something");
}
然后,可以通过任何JSF支持bean中的
getSessionMap().get(“data”)
,或者通过任何JSF支持bean中的@ManagedProperty(“{data}”)
,或者通过JSF页面中EL中的{data}
,来获取这些信息。您似乎完全忽略了一个事实,即JSF只是“平原”上的一个大抽象层Servlet API和ExternalContext
(请花所有时间仔细阅读其内容,包括)仅委托给“普通”Servlet API中可用的类/方法
在您的特定情况下,当您在Servlet API(而不是Portlet API)之上使用JSF时,ExternalContext\getSessionMap()
仅仅是/。猜猜看,HttpSession
位于HttpSessionListener
中,可通过HttpSessionEvent
参数随时获取
@Override
public void sessionCreated(HttpSessionEvent event) {
event.getSession().setAttribute("data", "something");
}
然后,可以通过任何JSF支持bean中的getSessionMap().get(“data”)
,或通过任何JSF支持bean中的@ManagedProperty(“{data}”)
,或仅通过JSF页面中EL中的{data}
来获取此信息