私のデビュー 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 />
ビューで。