4

我知道可以使用 web.xml 中的配置来提供自定义错误 404 页面,如下所示:

<error-page>  
       <error-code>404</error-code>  
         <location>/NotFound.jsp</location>  
 </error-page>  

但是我预计许多错误代码网页会非常相似——只有错误代码和文本会改变。

为了减少过多的文件和重复使用,最好将参数传递给具有所有通常 HTML 和 CSS 优点的通用页面。

我使用 Apache MyFaces,并阅读了有关 ExceptionHandlerFactory(此处)的信息,但我发现没有提供错误代码。

是不是我可以自定义错误代码页面的绝对唯一方法是为每个要自定义的错误代码创建一个,然后使用 web.xml 将它们连接起来?:-(

4

1 回答 1

9

错误页面可以只是一个 JSF 页面。如果您正在运行支持 Servlet 3.0 的容器,则可能会有一个全局错误页面:

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

如果您正在运行 Servlet 2.5 或更旧的容器,或者碰巧使用 Tomcat 7,但到目前为止还没有实现全局错误页面,那么您需要为每个状态代码指定单独的错误页面,但它们都可以指向相同的错误页面。

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

状态码和异常类型在 EL 中可用,如下所示:

Status code: #{requestScope['javax.servlet.error.status_code']}
Exception type: #{requestScope['javax.servlet.error.exception_type']}

如有必要,您可以对此进行条件检查。请注意,默认情况下,异常的状态代码始终为 500。

如果您使用的是 JSP 的后续 Facelets,那么模板化会更加容易。

于 2012-05-09T14:45:27.067 回答