使用faces-config和PrimeFaces 4.0时出现NullPointerException

时间:2013-10-22 09:36:04

标签: java jsf primefaces faces-config

当一起使用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获取它时,这不可能是我的错误。

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

2 个答案:

答案 0 :(得分: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。

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

答案 1 :(得分:0)

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

来自Primefaces文档:

  

PrimeFaces 4.0同时支持JSF 2.0,2.1和2.2运行时   使用特征检测和没有编译时依赖性   具体版本。因此,某些功能仅可用   取决于运行时间。