【问题标题】:RequestContext throws NPE from a different context than FacesContextRequestContext 从与 FacesContext 不同的上下文中抛出 NPE
【发布时间】:2013-03-15 09:04:32
【问题描述】:

为什么在与FacesContext 不同的上下文中调用RequestContext rq = RequestContext.getCurrentInstance() 会引发NullPointerException

我无法做类似的事情:

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

我想做的是在WebFilter 中检索一个bean 并调用一个方法。这个方法使用上面的sn -p;所以它抛出NullPointerException

感谢您的帮助。

【问题讨论】:

    标签: jsf-2 primefaces


    【解决方案1】:

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

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

    创建RequestContext并将其保存为FacesContext属性是在Primefaces的PhaseListener中完成的,在恢复视图阶段之后,所以它不存在于你的过滤器。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-04-14
      • 1970-01-01
      • 2021-01-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多