RequestContext从与FacesContext不同的上下文中抛出NPE

时间:2013-03-15 09:04:32

标签: jsf-2 primefaces

为什么从RequestContext rq = RequestContext.getCurrentInstance()以外的其他上下文调用FacesContext会引发NullPointerException

我无法做到这样的事情:

RequestContext rq = RequestContext.getCurrentInstance() //NPE is thrown
if (rq != null) {
..
}

我要做的是检索WebFilter中的bean并调用方法。此方法使用上面的代码段;所以它会抛出NullPointerException

感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

RequestContext的实例在FacesContext中保存为属性,因此当没有FacesContext时,您将拥有NPE。以下代码将告诉您如何获取RequestContext,并且将被清除:

return (RequestContext) FacesContext.getCurrentInstance().getAttributes().get(Constants.REQUEST_CONTEXT_ATTR);

还原视图阶段 之后,在RequestContext个Primefaces中创建FacesContext并将其另存为PhaseListener属性,它在您的过滤器中不存在。