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>

優先度はどのように決定されますか? 登場順?

編集: よくお読みください。2 つのエラー ページの定義があります。

4

2 に答える 2

0

サーブレットで「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 へのリダイレクトと /error/maur_error.jsp への 500 へのリダイレクトをトリガーする必要があります。

たとえば、私はあなたと同様の問題を抱えていました (そのため、ViewExpiredException -> 間違ったページ)。それは、このエントリもあったためです。

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

ViewExpiredException がより一般的な Exception にラップされたため、トリガーされたのは Throwable エントリでした。

つまり、500 エラー ページのページが定義されている場合は、一般的な例外ページを定義しないでください。これは不要であり、より具体的な例外ページを「食べる」ことになります。

于 2015-04-01T11:43:58.633 に答える