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

Jakarta ee Web.xml错误页面定义优先级,jakarta-ee,web-applications,Jakarta Ee,Web Applications,我已经到处找过了,好像没有找到地址。如果在我的webapp中有一个错误处理位 <error-page> <exception-type>javax.faces.ViewExpiredException</exception-type> <location>/error.jsp</location> </error-page> <error-page> <error-cod

我已经到处找过了,好像没有找到地址。如果在我的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>
如何确定优先级?按外观顺序


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

如果在servlet中执行“response.sendError500”,用户将看到error.jsp。相反,如果您确实“抛出新的MyException”,用户将看到maur_error.jsp。这是由两个不同页面处理的两种不同情况


以500和Trowable为例确实没有多大意义。但在另一种情况下,例如AddressNotFoundException、SubscriptionExpiredException和401未授权HTTP错误代码,这些代码由app server提供,而不是由应用程序提供。此映射使错误处理变得容易。

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

e、 我有一个与你类似的问题,所以ViewExpiredException->错误的页面,这是因为我也有这个条目

<error-page>
    <exception-type>java.lang.Throwable</exception-type>
    <location>/genericError.xhtml</location>
</error-page>
由于ViewExpiredException包装在一个更通用的异常中,因此触发了可丢弃的条目thas


简而言之,如果您定义了一个500错误页面,请不要定义一般异常页面。不需要它,它将“吃掉”您更具体的异常页面。

在一个时间点上,您可能会出现异常或错误……您不能同时出现这两个异常……因此不存在优先权问题……不。你不能同时拥有两个,没有什么能阻止你拥有两个处理类似条件的人,因为我的例子有点做作。我的意思是,如果存在两种错误情况,例如,ViewExpiredException的错误页面通常会导致错误代码500,而http状态代码500的错误页面定义,鉴于ViewExpiredException自然会导致500?@kolossus,我认为这种情况已经得到了解决。如果抛出ViewExpiredException,应用程序将转到javax.faces.ViewExpiredException中定义的位置。如果应用程序执行response.sendError500,则应用程序将转到500定义的位置。它们是由不同的处理程序处理的不同错误条件。优先权问题在哪里?