2

例外が発生してユーザーに表示されないようにするにはどうすればよいですか? 代わりに、エラーが発生した場合にユーザーを特定のページにリダイレクトすることを想像できます。

特に、次のような HTTP ステータス 500 ビューの例外を防止したいと考えています。

javax.faces.application.ViewExpiredException: /index.xhtmlNo saved view state could be found for the view identifier: /index.xhtml
    at org.apache.myfaces.lifecycle.RestoreViewExecutor.execute(RestoreViewExecutor.java:132)
    at org.apache.myfaces.lifecycle.LifecycleImpl.executePhase(LifecycleImpl.java:170)
    at org.apache.myfaces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:117)
    at javax.faces.webapp.FacesServlet.service(FacesServlet.java:197)
4

4 に答える 4

4

基本的に、例外ハンドラーを MyFaces 構成に追加できます。

ファクトリ メソッドを提供してから、実装を提供する必要があります。エラーページのリダイレクトも設定する必要があります。

https://cwiki.apache.org/MYFACES/handling-server-errors.html

于 2012-08-19T13:57:44.497 に答える
1

でカスタム エラー ページを定義してみませんweb.xmlか? 次のように HTTP エラー コードを指定できます。

<error-page>
    <error-code>500</error-code>
    <location>/myerror.jsp</location>
</error-page>

...または Java 例外クラス:

<error-page>
    <exception-type>java.lang.Throwable</exception-type>
    <location>/myerror.jsp</location>
</error-page>

このソリューションには、エラー ページ自体を除いて、追加の実装を必要としないという利点があります。

于 2012-08-20T12:43:02.197 に答える
0

catch ブロックでメソッドを削除、リダイレクトコードを記述します。printStackTrace()

例えば:

try{

        // Your code

     }catch(Exception ex){

       // Redirection Code

     }
于 2012-08-19T13:57:55.957 に答える
-3

@Kumar Vivek Mitra に同意しますが、finally ブロックにリダイレクトを追加できると思います

 try{

    // Your code

 }catch(Exception ex){

   // syserr

 }finally{
      //redirect
 }
于 2012-08-19T14:16:52.147 に答える