1

这个我找了一圈,好像没有解决。如果在我的 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>

优先级如何确定?按出场顺序?

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

4

2 回答 2

0

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

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

于 2012-10-07T09:06:38.500 回答
0

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

例如,我遇到了与您类似的问题(因此 ViewExpiredException -> 错误页面),这是因为我也有此条目

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

由于 ViewExpiredException 被包装在更通用的异常中,因此触发了 Throwable 条目。

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

于 2015-04-01T11:43:58.633 回答