在类级别注入HttpRequest

时间:2013-08-15 13:48:46

标签: java java-ee cdi

我有一个使用JavaEE 6堆栈的应用程序,在TomEE上运行。我想注入当前的HttpServletRequest&响应所以我一直在做以下几点:

@RequestScoped
@Named("loginAction")
public class LoginAction implements Serializable {

  @Context
  private HttpServletRequest httpRequest;

  @Context
  private HttpServletResponse httpResponse;

  public void doLogin() {
    // Use httpRequest & httpResponse here
  }

}

然后我在JSF页面上有一个commandButton,调用loginAction.doLogin来执行它的操作。麻烦的是,当调用doLogin时,我正在使用NPE来处理httpRequest / httpResponse。它们作为ThreadLocalHttpServletRequest / Response对象返回,但是当我调用任何get方法(例如httpRequest.getRequestURI())时,这些调用将抛出NPE。

我看到很多回复说当它转移到某个方法时它会起作用。 E.g。

public void doLogin(@Context HttpServletRequest httpRequest, @Context HttpServletResponse httpResponse) {
  // ...
}

但如果我这样做,我将无法从JSF页面访问doLogin方法。

任何人都可以了解一下:

  1. 为什么我看到了NPE?
  2. 我可以将HttpServletRequest注入我的bean吗?
  3. 为任何帮助干杯!

0 个答案:

没有答案