我有一个使用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方法。
任何人都可以了解一下:
为任何帮助干杯!