我正在将我的应用部署到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>
感谢。
答案 0 :(得分:1)
通过定义JSF servlet映射来响应* .xhtml文件而不是使用默认的.jsf
,我设法解决了这个问题。<servlet-mapping>
<servlet-name>FacesServlet</servlet-name>
<url-pattern>*.xhtml</url-pattern>
</servlet-mapping>
当我使用* .xhtml作为我的jsf映射时,可以正确处理自定义404页面。