我环顾四周,似乎没有解决。如果在我的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>
如何确定优先顺序?出现顺序?
编辑:请仔细阅读,两个错误页面定义
答案 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错误页面的页面,请不要定义通用异常页面。它不是必需的,而且会“吃”。您更具体的例外页面。