我在Java EE6世界中很安静(但是,JEE5,我知道的很多)。
我的环境是Glassfish 3.1.2
我正在尝试在一个CDI bean(一个用@Named和@ * Scoped注释的pojo)中注入servlet对象,这个对象是用$ {nameofBean.nameofMethode(par1 ...)}
调用的jsp我试试这个:
@Inject
private ServletContext context; (or HTTPServletRequest or HttpServletResponse (for calling sendRedirect))
这给了我以下部署异常:WELD-001408类型[ServletContext]的不满意依赖关系,在注入点使用限定符[@Default]
显然,在JBoss上,这可能有效:http://docs.jboss.org/seam/3/servlet/latest/reference/en-US/html/injectablerefs.html
我有一个想法就是使用@Produces,但直到现在,我还没弄明白该怎么做。
或许可以说我为什么要这样做:
我想做一些CRUD的东西,但我真的不知道如何处理异常。所以我的想法是:创建一个CDI Bean,它由JSP调用,并在后端调用一些ejb。如果EJB抛出异常,我想在CDI Bean中捕获这个并且与请求对象有关(在某处重定向,设置消息......)。通过注入servlet上下文,我还可以访问POST参数。我想避免使用servlet来支持jsps并与ejbs建立连接(我认为这样做太过时了)。
感谢您的帮助
Yves
答案 0 :(得分:-1)
使用ServletContext
@Resource
的引用
@Resource
private ServletContext servletContext;
但是,您无法注入HttpServletRequest
或HttpServletResponse
。为此,您需要一个存储请求和响应对象的servlet过滤器。 Seam solder提供此功能。
我不是使用JSF或JSP的前端工程专家,但我确信,存在一种比使用ServletContext
或响应对象更合适的处理异常的方法......