Web.xml错误页面定义优先级

时间:2012-10-07 04:05:36

标签: java-ee web-applications

我环顾四周,似乎没有解决。如果在我的webapp中我有一个错误处理位

  <error-page>
    <exception-type>javax.faces.ViewExpiredException</exception-type>
    <location>/error.jsp</location>
  </error-page>
  <error-page>
    <error-code>500</error-code>
    <location>/error/maur_error.jsp</location>
  </error-page>

如何确定优先顺序?出现顺序?

编辑:请仔细阅读,两个错误页面定义

2 个答案:

答案 0 :(得分:0)

如果在servlet中执行'response.sendError(500)',用户将看到error.jsp。相反,如果你“抛出新的MyException()”,用户将看到maur_error.jsp。这是由2个不同页面处理的2种不同情况。

500和Throwable的例子确实没有多大意义。但在另一种情况下,例如AddressNotFoundException,SubscriptionExpiredException和401 Not Authorized HTTP errror代码(由app服务器提供,而不是由应用程序提供),这种映射使错误处理变得容易。

答案 1 :(得分:0)

您的配置不应该有优先级问题,因此如果您的xml中有其他错误条目,则ViewExpiredException应该触发重定向到/error.jsp并且500会触发到/error/maur_error.jsp exept

e.g。我有一个类似的问题(所以ViewExpiredException - &gt;错误的页面),这是因为我也有这个条目

<error-page>
    <exception-type>java.lang.Throwable</exception-type>
    <location>/genericError.xhtml</location>
</error-page>

由于ViewExpiredException包含在更通用的Exception中,因此触发了Throwable条目。

简而言之,如果您定义了500错误页面的页面,请不要定义通用异常页面。它不是必需的,而且会“吃”。您更具体的例外页面。