为什么从RequestContext rq = RequestContext.getCurrentInstance()
以外的其他上下文调用FacesContext
会引发NullPointerException
?
我无法做到这样的事情:
RequestContext rq = RequestContext.getCurrentInstance() //NPE is thrown
if (rq != null) {
..
}
我要做的是检索WebFilter
中的bean并调用方法。此方法使用上面的代码段;所以它会抛出NullPointerException
。
感谢您的帮助。
答案 0 :(得分:2)
RequestContext
的实例在FacesContext
中保存为属性,因此当没有FacesContext
时,您将拥有NPE。以下代码将告诉您如何获取RequestContext
,并且将被清除:
return (RequestContext) FacesContext.getCurrentInstance().getAttributes().get(Constants.REQUEST_CONTEXT_ATTR);
在 还原视图阶段 之后,在RequestContext
个Primefaces中创建FacesContext
并将其另存为PhaseListener
属性,它在您的过滤器中不存在。