在WildFly中访问不存在的JSF页面时,未显示404错误页面

时间:2014-03-26 21:28:23

标签: java jsf jsf-2 wildfly

我正在将我的应用部署到WildFly 8并尝试对其进行配置,以便通过将以下内容添加到我的web.xml中来提供自定义404错误页面

<error-page>  
    <error-code>404</error-code>  
    <location>/error.jsf</location>  
</error-page>

当我尝试访问不退出的非JSF页面时,这很好用。例如,如果我尝试访问名为IDoNotExist.html的页面,则会正确显示错误页面。

但是,如果我尝试访问不存在的JSF页面,例如IDoNotExist.jsf,然后我没有得到我的自定义错误页面 - 我只是得到一个空白页面,并将以下错误记录到WildFly。

WARNING [javax.enterprise.resource.webcontainer.jsf.context] (default task-8) JSF1091: No mime type could be found for file  
/IDoNotExist.jsp.  To resolve this, add a mime-type mapping to the applications web.xml.  

请注意,错误日志引用.JSP页面,而我试图访问.JSF页面。

我已经尝试为JSP页面添加一个mime类型映射,虽然它在控制台上摆脱了错误消息,但我仍然没有看到我的自定义404页面用于不存在的JSF页面。

我还认为在呈现页面之前可能会抛出一些异常,因此我尝试在web.xml中添加异常错误处理程序,但这也没有任何区别。

我的web.xml文件中是否缺少某些内容或是否需要其他配置?

我的web.xml很简单:

<?xml version="1.0" encoding="UTF-8"?>

<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
         version="3.1">
    <error-page>
        <error-code>404</error-code>
        <location>/error.jsf</location>
    </error-page>
</web-app>

感谢。

1 个答案:

答案 0 :(得分:1)

通过定义JSF servlet映射来响应* .xhtml文件而不是使用默认的.jsf

,我设法解决了这个问题。
<servlet-mapping>
    <servlet-name>FacesServlet</servlet-name>
    <url-pattern>*.xhtml</url-pattern>
</servlet-mapping>

当我使用* .xhtml作为我的jsf映射时,可以正确处理自定义404页面。