Java faces配置导致web应用程序启动时出现异常

Java faces配置导致web应用程序启动时出现异常,java,jsf-2,tomcat6,faces-config,Java,Jsf 2,Tomcat6,Faces Config,我现在正在开发一个web应用程序。我在Tomcat6上使用JSF2。 一切都很顺利,但现在我想浏览我的网页。。。(). 为此,我需要添加一个faces-config.xml。我做到了,但是在添加了faces配置之后,当我想打开我的页面时,我总是会出错 SCHWERWIEGEND: Servlet.service() for servlet Faces Servlet threw exception java.lang.StackOverflowError at j

我现在正在开发一个web应用程序。我在Tomcat6上使用JSF2。 一切都很顺利,但现在我想浏览我的网页。。。(). 为此,我需要添加一个faces-config.xml。我做到了,但是在添加了faces配置之后,当我想打开我的页面时,我总是会出错

    SCHWERWIEGEND: Servlet.service() for servlet Faces Servlet threw exception
    java.lang.StackOverflowError
        at javax.servlet.http.HttpServletRequestWrapper.getSession(HttpServletRequestWrapper.java:216)
...
如果我删除faces配置,一切都很好(但是我没有导航:())

以下是我的maven依赖项: com.sun.faces jsf api 2.1.2 com.sun.faces jsf impl 2.1.2 javax.servlet jstl 1.2 javax.servlet.jsp api 2.2 org.glassfish.web el impl 2.2

这是我的faces-config.xml

<?xml version="1.0" encoding="utf-8"?>
<faces-config version="1.2" xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xi="http://www.w3.org/2001/XInclude" 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">

    <application>
        <navigation-handler>de.xxx.jsf.client.navigation.XXXNavigationHandler</navigation-handler>
    </application>
</faces-config>

de.xxx.jsf.client.navigation.XXXNavigationHandler
这是我的web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
    http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
    id="WebApp_ID" version="2.5">

    <display-name>JavaServerFaces</display-name>

    <!-- Change to "Production" when you are ready to deploy -->
    <context-param>
        <param-name>javax.faces.PROJECT_STAGE</param-name>
        <param-value>Development</param-value>
    </context-param>
    <context-param>
        <param-name>com.sun.faces.injectionProvider</param-name>
        <param-value>de.xxx.jsf.client.guice.GuiceInjectionProvider</param-value>
    </context-param>

    <!-- Welcome page -->
    <welcome-file-list>
        <welcome-file>faces/hello.xhtml</welcome-file>
    </welcome-file-list>

    <!-- JSF mapping -->
    <servlet>
        <servlet-name>Faces Servlet</servlet-name>
        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <!-- Map these files with JSF -->
    <servlet-mapping>
        <servlet-name>Faces Servlet</servlet-name>
        <url-pattern>/faces/*</url-pattern>
    </servlet-mapping>

    <servlet-mapping>
        <servlet-name>Faces Servlet</servlet-name>
        <url-pattern>*.xhtml</url-pattern>
    </servlet-mapping>

</web-app>

JavaServerFaces
javax.faces.PROJECT_阶段
发展
com.sun.faces.injectionProvider
de.xxx.jsf.client.guice.guiceInputProvider
faces/hello.xhtml
Facesservlet
javax.faces.webapp.FacesServlet
1.
Facesservlet
/面孔/*
Facesservlet
*.xhtml
你们中有人知道为什么应用程序会崩溃吗

提前谢谢


TJ

您的faces-config.xml头仍然指向1.2 DTD。这可能会导致无法预测的错误。我建议将其更新为2.0 DTD并重试



太快了!这就是解决方案。谢谢你这么瞎;)没关系。从经验中学习(我花了一个工作日来找出导致问题的原因)。很高兴我的经验帮助了一些人。请注意,您链接的无XML导航文章是针对JSF 1.x的(2008年11月编写的,而JSF 2.x是在2009年12月推出的),后来已经在标准JSF 2.0 API中接管了!忽略这篇文章,删除自定义导航处理程序,只利用的新JSF2.0内置特性。同样,要非常小心,不要过于关注JSF1.x目标文章。在JSF2.x中,很多事情都是以不同的方式完成的,而且更加优雅。