我正在将我的应用程序部署到 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 类型映射,虽然这消除了控制台上的错误消息,但我仍然看不到不存在的 JSF 页面的自定义 404 页面。
我还认为在页面呈现之前可能会抛出一些异常,因此我尝试在 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>
谢谢。
最佳答案
我已经通过定义 JSF servlet 映射来响应 *.xhtml 文件而不是使用默认的 .jsf 来解决这个问题
<servlet-mapping>
<servlet-name>FacesServlet</servlet-name>
<url-pattern>*.xhtml</url-pattern>
</servlet-mapping>
当我使用 *.xhtml 作为 jsf 映射时,可以正确处理自定义 404 页面。
关于java - WildFly 访问不存在的 JSF 页面时不显示 404 错误页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22673449/