0

私のデビュー J2EE 6 アプリ。はんだ ExceptionHandler を使用して例外を処理していますが、あまり好きではありません。私がやりたいことは複雑すぎるようです。

例えば

import java.io.IOException;

import javax.faces.context.FacesContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.jboss.solder.exception.control.CaughtException;
import org.jboss.solder.exception.control.Handles;
import org.jboss.solder.exception.control.HandlesExceptions;

/**
 * Handle exceptions and redirect page.
 */
@HandlesExceptions
public class ExceptionHandlers {


    void noResult(
            @Handles CaughtException<dne.nmst.ond.exceptions.OfficeNotFoundException> caught,
            HttpServletRequest request, HttpServletResponse response) {
        caught.handled();

        try {
            String msg = caught.getException().getMessage();
            response.sendRedirect(request.getContextPath()
                    + "/searchOffice.xhtml");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

searchOffice.xhtml で OfficeNotFoundException からのエラー メッセージを表示したいと考えています。どうやってここからあそこに持っていくの?

私が考えたことの 1 つは、エラーをフラッシュ コンテキストに入れることでしたが、この例外処理クラスから FacesContext を参照しようとすると NPE が発生します。

web.xml でエラー ページ エントリを試しました。私はそれを働かせることができませんでした。

リダイレクトでリクエストパラメーターとして渡すことができることは知っていますが、それは回避策のようです。私はそれを最も簡単で「最も正しい」方法でやりたいと思っています(それが何を意味するにせよ)。

私は、pages.xml でこれを行うことができた Seam 2 が恋しいです:

<exception class="dne.nmst.ond.exceptions.OfficeNotFoundException">
  <redirect include-page-params="false" view-id="searchOffice.xhtml">
  <message severity="warn"/>
</redirect>

<h:messages />

ビューで。

4

1 に答える 1

0

コードでエラー メッセージを設定し、メッセージを表示する h:messages タグを指定できます。以下の回答を参照してください。

https://stackoverflow.com/a/4194098/2450373

于 2013-10-29T09:00:42.897 に答える