我有一个使用Spring用JSF2编写的Web应用程序。我需要创建一个作为JSF HTTP会话包装器的bean,并在内部使用它。对我来说,将HttpSession对象注入该bean的定义中并将该bean的作用域限定为会话似乎是合乎逻辑的。但是,我找不到在context.xml文件中定义注入的方法。是否可以这样做,是否适得其反,还有更好的方法吗?我想要的是将当前会话包含在该bean中。如果有一个静态方法来获取会话(类似于ASP.NET中的HttpContext.Current.Session),它也将很有用。提前致谢。
最佳答案
我不确定Spring部分(我不使用它,我只使用标准的Java EE 6 API),但是您可以通过HttpSession
在JSF上下文中静态获取ExternalContext#getSession()
,如下所示:
HttpSession session = (HttpSession) FacesContext.getCurrentInstance().getExternalContext().getSession(true);
您可以在bean的(后)构造函数中执行此操作。