1

一起使用 PrimeFaces 和 faces-config 时,我得到一个 NullPointerException。在添加 faces-config.xml 之前,一切正常。添加 faces-config.xml 以更改导航后,调用每个页面时出现以下错误:

java.lang.NullPointerException
  org.primefaces.context.PrimeFacesContext.release(PrimeFacesContext.java:26)
  javax.faces.webapp.FacesServlet.service(FacesServlet.java:612)
  org.primefaces.webapp.filter.FileUploadFilter.doFilter(FileUploadFilter.java:98)
  de.mypackage.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:19)

CharacterEncodingFilter 只是确保使用 UTF-8:

public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws ServletException, IOException {
    request.setCharacterEncoding("UTF-8");
    chain.doFilter(request, response);
}

所以这不能是错误源。faces-config.xml 包含以下文本:

<?xml version="1.0" encoding="UTF-8"?>
<faces-config xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd"
version="1.2">
<navigation-rule>
    <from-view-id>*</from-view-id>
    <navigation-case>
        <from-outcome>index</from-outcome>
        <to-view-id>/index.jsf</to-view-id>
    </navigation-case>
</navigation-rule>

这应该将每个指向索引的链接指向一个 index.jsf,而不是关于当前站点在哪个文件夹中。但是如果 faces-config.xml 是这样的:

<?xml version="1.0" encoding="UTF-8"?>
<faces-config xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd"
version="1.2">

出现同样的错误。

一切都在 Tomcat 7 上运行。

对错误的搜索没有包含太多结果,在http://forum.primefaces.org/viewtopic.php?f=3&t=30109&start=10中,有人似乎对 PrimeFaces 4.0 的旧版本有同样的问题,但是作为我是从 maven 那里得到的,这不是我的错误。

有没有人提示如何解决这个问题?

4

2 回答 2

1

该问题可能与使用 JBoss Seam Mail 和 PrimeFaces 4.0 有关:

http://forum.primefaces.org/viewtopic.php?f=3&t=34653

就我而言,我使用了 PrimeFaces v3.4.2 并且一切正常。

升级到官方 maven 的 PrimeFaces v4.0 后出现相同的 NPE。

我的面孔-config.xml:<faces-config version="2.1">

于 2014-01-10T21:21:31.763 回答
0

事实上,Primefaces 4 不适用于 JSF 1.2,但它确实适用于 2.2 之前的 JSF。

来自 Primefaces 文档:

PrimeFaces 4.0 使用特征检测同时支持 JSF 2.0、2.1 和 2.2 运行时,并且不依赖于特定版本的编译时间。因此,某些功能仅根据运行时可用。

于 2013-10-24T06:10:38.487 回答