[Seasar-user:10766] Re: [Teeda]エラーページについて

Shinpei Ohtani [E-MAIL ADDRESS DELETED]
2007年 9月 28日 (金) 18:19:15 JST


大谷です.

> 【[Seasar-user:8744][Teeda] teedaErrorPage.diconについて】を参考にして
> error.htmlを作成したのですがエラーメッセージが出力されずに困っています。
>
> サンプルとして作成したプログラムでは HogePageのinitializeで例外を発生させて
> error.htmlを表示させ、その中に発生したメッセージを表示させようとしています。

ちょっと何を期待しているのかが具体的でないので、
エラーメッセージが表示されていないのか、Exceptionで設定したメッセージが
表示されていないのか、どちらなのでしょうか?

Doltengで吐き出したサンプルをベースに話をすれば、
ErrorPageにExceptionをフィールドとしてもっておけば、そこに例外が設定されるので、
exception.getMessage()と取得すれば、小林さんが対応してくれた
SNAPSHOTでは上手くメッセージも取れるはずです.
(そうじゃない場合は、exception.getCause().getMessage()になります)

たとえば、下記のような感じです.

<form id="errorForm">
<span id="allMessages"></span>
<span id="amessage">hogehoge</span>
<span id="stackTrace" te:escape="false"></span><br/>
</form>

public class ErrorPage {

	private static final String SERVLET_NAME = "javax.faces.webapp.FacesServlet";

	private FacesContext context;

	private String stackTrace;

	private Exception exception;

	private String amessage;

	public Class prerender() {
		stackTrace = buildStackTrace(exception);
		amessage = exception.getMessage();
		return null;
	}
(省略)

ひとつだけ注意点はmessageという名前のidは
ErrorMessageのコンポーネントのマッピングにされてしまうので
気をつけてください.上記サンプルではmesssageとしています.
(ドキュメントは書きます・・・すいません)

宜しくお願いします.

07/09/28 に [E-MAIL ADDRESS DELETED]<[E-MAIL ADDRESS DELETED]>
さんは書きました:
> いつもお世話になっております。
> 丸岡です。
>
> 【[Seasar-user:8744][Teeda] teedaErrorPage.diconについて】を参考にして
> error.htmlを作成したのですがエラーメッセージが出力されずに困っています。
>
> サンプルとして作成したプログラムでは HogePageのinitializeで例外を発生させて
> error.htmlを表示させ、その中に発生したメッセージを表示させようとしています。
> 以下、作成したファイルです。
>
> ・HogePage ─────────────────────────────
>
>     public void initialize() throws Exception{
>       throw new Exception("出力したいメッセージ");
>  }
>
>
> ・error.html ────────────────────────────
>
> <html xmlns:te="http://www.seasar.org/teeda/extension">
> <head>
> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
> <title>エラーページ</title>
> </head>
> <body>
> エラーが発生しました
> <form id="errorForm">
> <span id="allMessages"></span>
> <span id="stackTrace" te:escape="false"></span><br/>
> </form>
> </body>
> </html>
>
> ・ErrorPage ────────────────────────────
>
> doltengでデフォルトで作成したままの状態
>
>
>
> ・teedaErrorPage.dicon ───────────────────────
>
> <component class="org.seasar.teeda.core.util.ServletErrorPageManagerImpl">
>  <initMethod name="addErrorPage">
>   <arg>@[E-MAIL ADDRESS DELETED]</arg>
>   <arg>"/view/error/error2.html"</arg>
>  </initMethod>
>  <initMethod name="addErrorPage">
>   <arg>@[E-MAIL ADDRESS DELETED]</arg>
>   <arg>"/view/error/error.html"</arg>
>  </initMethod>
> </component>
>
>
>
>
>
> >丸岡です。
> >
> >TestExceptionをRuntimeException のサブクラスにすることで問題なく動作しました。
> >夜分遅くの回答ありがとうございました。
> >
> >
> >
> >>小林 (koichik) です.
> >>
> >>Date:    Fri, 28 Sep 2007 01:07:00 +0900
> >>From:    <[E-MAIL ADDRESS DELETED]>
> >>To:      <[E-MAIL ADDRESS DELETED]>
> >>Subject: [Seasar-user:10756] [Teeda]エラーページについて
> >>
> >>> (2)次に、ユーザ例外「TestException」クラスを作成し、teedaErrorPage.diconに
> >>> 【teedaErrorPage.dicon その2】のように設定しました。
> >>>
> >>> ※[Seasar-user:8941]を参考にしました。
> >>>
> >>>
> >>> (3) 適当な画面のinitialize() メソッド内で例外を以下のように発生させてみたところ
> >>> 意図するエラーページ(error2.html)に遷移せずにerror.htmlに遷移してしまいました。
> >>>
> >>>    public void initialize() throws TestException{
> >>>      throw new TestException();
> >>> }
> >>>
> >>>
> >>> 上記のような使い方は何か間違いがあるのでしょうか?
> >>
> >>TestException が checked 例外の場合に
> >>問題がありました.
> >>
> >>差し障りがなければ TestException を
> >>RuntimeException のサブクラスにして
> >>回避してください.
> >>
> >>checked 例外を使う必要がある場合は
> >>以下の SNAPSHOT を使ってください.
> >># Teeda Extension 以外は 1.0.11-RC2 を
> >># 使ってください.
> >>
> >>http://maven.seasar.org/maven2-snapshot/org/seasar/teeda/teeda-extension/1.0.12-EA1-SNAPSHOT/teeda-extension-1.0.12-EA1-20070927.185608-2.jar
> >>
> >>
> >>--
> >><component name="koichik">
> >>    <property name="fullName">"Koichi Kobayashi"</property>
> >>    <property name="email">"[E-MAIL ADDRESS DELETED]"</property>
> >>    <property name="blog">"http://d.hatena.ne.jp/koichik"</property>
> >></component>
> >>
> >>_______________________________________________
> >>Seasar-user mailing list
> >>[E-MAIL ADDRESS DELETED]
> >>https://ml.seasar.org/mailman/listinfo/seasar-user
> >>
> >_______________________________________________
> >Seasar-user mailing list
> >[E-MAIL ADDRESS DELETED]
> >https://ml.seasar.org/mailman/listinfo/seasar-user
> >
> _______________________________________________
> Seasar-user mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-user
>


-- 
=============================
Shinpei Ohtani
[E-MAIL ADDRESS DELETED]
=============================



Seasar-user メーリングリストの案内