[Seasar-user:10769] Re: [Teeda]エラーページについて
[E-MAIL ADDRESS DELETED]
[E-MAIL ADDRESS DELETED]
2007年 9月 28日 (金) 19:37:20 JST
丸岡です。
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;
}
:(以下、Setter/Getter)
}
でエラーページクラスを作成したのですが、やはりエラーメッセージやスタックトレースが
出力されません。
Debugしてみると、変数:exception がNullになっていました。
エラーをわざと発生させているページは先ほどと同じで
public String initialize() throws Exception{
throw new Exception ("出力したいメッセージ");
}
のままです。エラーページで期待しているのは、ここで設定した"出力したいメッセージ"
やスタックトレースを取得したいのです。
現在の環境は
・teeda-extension-1.0.12-EA1-20070927.185608-2.jar
・Teeda Extension 以外は 1.0.11-RC2
です。
>大谷です.
>
>>ひとつだけ注意点はmessageという名前のidは
>>ErrorMessageのコンポーネントのマッピングにされてしまうので
>>気をつけてください.上記サンプルではmesssageとしています.
>>(ドキュメントは書きます・・・すいません)
>
>messsage -> amessage
>ですね.
>宜しくお願いします.
>
>07/09/28 に Shinpei Ohtani<[E-MAIL ADDRESS DELETED]> さんは書きました:
>> 大谷です.
>>
>> > 【[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]
>> =============================
>>
>
>
>--
>=============================
>Shinpei Ohtani
>[E-MAIL ADDRESS DELETED]
>=============================
>_______________________________________________
>Seasar-user mailing list
>[E-MAIL ADDRESS DELETED]
>https://ml.seasar.org/mailman/listinfo/seasar-user
>
Seasar-user メーリングリストの案内