我有一个用JSF2编写的使用Spring的Web应用程序。我需要创建一个作为JSF HTTP会话包装的bean并在内部使用它。对我来说,将HttpSession对象注入到该bean的定义中并将该bean的范围限定在会话中似乎是合乎逻辑的。但是我找不到在context.xml文件中定义注入的方法。是否有可能做到这一点,是否适得其反,有没有更好的办法?我想要的只是在该bean中拥有当前会话。如果有一个静态方法来获得会话(类似于ASP.NET中的HttpContext.Current.Session),它也会很有用。提前致谢。有没有在JSF应用程序中用Spring注入HttpSession的方法?
0
A
回答
1
我不知道的弹簧片(我不使用它,我只使用了标准的Java EE 6 API),但你可以通过ExternalContext#getSession()
得到HttpSession
在静态情况下JSF如下:
HttpSession session = (HttpSession) FacesContext.getCurrentInstance().getExternalContext().getSession(true);
你可以在bean的(后)构造函数中做到这一点。
1
如果你是在一个Spring管理的处理方法,你可以简单地将HttpSession
对象添加到您的处理的方法签名和Spring会自动注入,如下所示:
@RequestMapping("/myhandler.do")
public String myHandler(HttpSession session) {
...foo...
}
+0
谢谢,但我的目的是包装与会话的某些功能,而不明确使用它 - 在我的情况下,我正在写一个身份验证bean,将采取用户名和密码来加载用户并将其放入会话中,并公开如果它已登录,则使用它,而不公开实际会话对象。我认为下面提出的静态访问将更适用于我的情况。尽管如此,了解我可以通过'@RequestMapping'注释传递会话很有用。 –
相关问题
- 1. 如何在Spring + JSF应用程序中使用JSF注释
- 2. 在Spring Boot应用程序配置中有没有办法使用Spring Cloud {cipher}?
- 3. Spring Boot应用程序。 SecurityContextHolder与HttpSession
- 4. 没有`apply`方法的应用程序?
- 5. 有没有什么方法在我的应用程序中嵌入egrep和wget?
- 6. 无法在Spring Boot应用程序中注入多个ObjectMapper bean
- 7. NSManagedObjects在没有UI的应用程序中的基本方法
- 8. 有没有办法在我的应用程序中使用mstest
- 9. MessageSource没有被Spring注入
- 10. JPA EntityManager没有被注入到Java EE应用程序中
- 11. 有没有办法在OSGi应用程序中查看注册的服务?
- 12. Spring没有将DAO注入到具有抽象超类的JSF托管bean中
- 13. 使用@Scheduled注释的方法在Spring Boot应用程序中不起作用
- 14. JSF 2.1 web应用程序的Spring Security
- 15. Spring Security Remember Me服务没有HttpSession
- 16. 使用maven创建一个没有IDE的jsf应用程序
- 17. 有没有来电时打开iPhone应用程序的方法?
- 18. Grails应用程序中的HttpSession
- 19. 没有Cookie的HttpSession
- 20. programmaticaly JSF中的应用程序启动时注入参数
- 21. Portlet,Spring,服务层注入HttpSession
- 22. Spring4发布--Spring @Qualifier注解没有被调用的Setter方法
- 23. JSF 2.0的Spring bean注入
- 24. JasperReports报告没有在Spring MVC应用程序中弹出
- 25. 有没有办法在Facebook上注册Google+上的应用程序?
- 26. 在现有的asp.net webforms应用程序中注入JavaScript
- 27. 有没有办法记录httpsession超时?
- 28. JSF 2.0 Web应用程序没有呈现在JSF 2.0 Web应用程序模板
- 29. 有没有办法在另一个进程中注入和执行C#应用程序?
- 30. .Net中的依赖注入没有虚拟方法调用?
谢谢,我想这是JSF替代ASP.NET的HttpContext.Current.Session。它对我来说工作得很好,甚至更好 - 我不需要将我的bean范围限定在会话中,因为它会始终静态获取它,这样我就可以拥有一个bean实例。当然,我不能在会话之外保留与当前会话内容相关的任何状态,以便该bean保持某种程度上的无状态。 –
不客气。我必须承认,这个要求对我来说没有多大意义。我认为一个简单的会话范围的托管bean是绰绰有余的。将会话数据存储在那里,而不是试图包装'HttpSession'。 – BalusC
我知道,但我的想法是强制到某个界面;换句话说,这个bean实现了一个接口,并且会被这个接口暴露出来,它不知道也不能依赖于Web技术和HTTP会话。 –