java - WildFly 访问不存在的 JSF 页面时不显示 404 错误页面

标签 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 类型映射,虽然这消除了控制台上的错误消息,但我仍然看不到不存在的 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/

相关文章:

javascript - 如何从 JSF 2.0 中的 javascript 获取元素

java - JSF 2.0 : Action doesn't work

jsf - javax.el.PropretyNotWritableException : The class Article does not have a writable property 'id'

java - 如何检测用户是否使用ipad或机器访问网站?

java - freemarker 中的子字符串不起作用

java - 如何以简单的方式重写 cucumber 场景?

jsf - 如何获取 JSF 类中资源的句柄?

java - 在java中基于大写拆分

java - JSF2 - 限制某些 xhtml 页面访问的灵活方式,在访问上应用简单的逻辑

jsf - 如何将参数传递给渲染属性?