1

重複の可能性:
JSF 1.2 例外処理

私のアプリケーションでは、アプリケーション エラーまたはシステム エラーが発生すると、例外をスローし、バッキング Bean でキャッチします。バッキング Bean で例外をキャッチし、次のように例外を FacesContext メッセージに変換しました

/**
* 
*/
public void createFacesExceptionMsg(Exception e){   
    String caughtAt = e.getStackTrace()[0].toString();
        if (null != caughtAt && !caughtAt.isEmpty()) {
            getFacesContext().addMessage(null, new FacesMessage   (FacesMessage.SEVERITY_ERROR, 
                    caughtAt, null));
        } else {
            getFacesContext().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, 
                    "Local message not set when Exception thrown - Application in error state", null));
        }           
}

errorpage.jsp で例外をレンダリングする必要があります。

faceContext メッセージを errorPage.jsp に出力する方法

そのjsf1.2

4

3 に答える 3

1

Web アプリケーション内で通常の Java 例外をスローすると、暗黙的なページ スコープ オブジェクトを使用して例外にアクセスできます${pageContext.exception}。このオブジェクトには、ページ レベルの宣言によってエラー ページとして指定されたページ内でのみアクセスできます。

   <%@ pageisErrorPage=”true”%>

またはデプロイメント記述子で。

新しい jsp 2.x を使用している場合は、次のようなメンバー変数を介して例外に関する情報を提供する新しいjavax.servlet.jsp.ErrorDataものにアクセスできます。${pageContext.errorData

  1. requestURI : 問題のあるリクエストの URI
  2. servletName : 失敗したサーブレット/JSP ページの名前。
  3. statusCode: HTTP ステータス コード
  4. throwable : 実際の例外オブジェクトと関連するメンバー フィールド。
于 2012-11-07T03:01:44.173 に答える
1

置くだけ

<h:messages />

あなたのjspで

于 2012-11-07T01:12:15.270 に答える
1

あなたがやろうとしていることを正しく理解していれば、

  1. 例外をキャッチ
  2. 顔メッセージをコンテキストに入れる
  3. error.jsp にリダイレクト
  4. facesMessage を error.jsp に表示する

JSF リファレンス実装では、ページ間でのグローバル フェース メッセージの受け渡しは機能しません。「箱から出して」そのように設計されていません。幸いなことに、これを行う方法があり、ページ間のリダイレクト、RequestDispatcher を介した転送、および標準の JSF ナビゲーション ケースを介した転送もサポートします。

これがあなたがやりたいことなら、ここで行ってください

複数のページリダイレクトで FacesMessages を永続化して渡す


次のようなリダイレクトで例外を処理する方法が必要な場合

  • sessionExpired.xhtml

  • loginRequired.xhtml

  • pageNotFound.xhtml

JSF の開発者 (Ed Burns) から ExceptionHandlerFactory について読む

ViewExpiredException の適切な処理 - JSF 2.0


OPコメント後に更新

次の手順に従って、問題が解決したかどうかをお知らせください。

  1. ExceptionHandler を使用します (@ Ed Burn's Blogで説明されているように)
  2. あなたのfacesMessageをhandle()あなたのメソッドに登録してくださいExceptionHandler
  3. それを表示するには、 error.jsp<h:messages/>に入れます。
  4. セッションを無効にするか、メイン メニューに移動するにerrorPageBean.action()は、erroPage.jsp
于 2012-11-07T09:02:39.500 に答える