使用JSF生成HTTP错误代码页面以及异常错误页面?

时间:2012-05-09 14:30:10

标签: jsf exception-handling web.xml error-code

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

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

但是我预计许多错误代码网页将非常相似 - 只有错误代码和文本会发生变化。

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

我使用Apache MyFaces,并阅读了ExceptionHandlerFactory(here),但我发现没有错误代码的规定。

是否可以自定义错误代码页面的唯一方法是为每个我想要自定义的错误代码创建一个,并使用web.xml连接它们? : - (

1 个答案:

答案 0 :(得分:9)

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

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

如果你正在运行一个或更早的Servlet 2.5容器,或碰巧使用仍然doesn't已经实现了全局错误页面的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,那么模板化将更加容易。