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

[E-MAIL ADDRESS DELETED] [E-MAIL ADDRESS DELETED]
2007年 10月 1日 (月) 16:35:00 JST


お世話になります。
丸岡です。
下記の件ですが、問題解決しました。

原因は teedaErrorPage.diconの記述間違い?のようです。
6行目のクラス指定が間違えていたようです。
どこかの記事をみて作成したのですが。。
エラーが発生したときに、エラーページが表示されていたのでまさか設定ファイルとは
気づきませんでした。

大変お騒がせして申し訳ありませんでした。


【修正前】──────────────────────────────
 1:<?xml version="1.0" encoding="UTF-8"?>
 2:<!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container 2.4//EN"
 3:	"http://www.seasar.org/dtd/components24.dtd">
 4:<components namespace="teedaErrorPage" >
 5:
 6:	<component class="org.seasar.teeda.core.util.ServletErrorPageManagerImpl">
 7:		<initMethod name="addErrorPage">
 8:			<arg>@[E-MAIL ADDRESS DELETED]</arg>
 9:			<arg>"/view/error/error.html"</arg>
10:		</initMethod>
11:	</component>
12:</components>

【修正後】──────────────────────────────
 1:<?xml version="1.0" encoding="UTF-8"?>
 2:<!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container 2.4//EN"
 3:	"http://www.seasar.org/dtd/components24.dtd">
 4:<components namespace="teedaErrorPage" >
 5:
 6:	<component class="org.seasar.teeda.extension.util.TeedaExtensionErrorPageManagerImpl">
 7:		<initMethod name="addErrorPage">
 8:			<arg>@[E-MAIL ADDRESS DELETED]</arg>
 9:			<arg>"/view/error/error.html"</arg>
10:		</initMethod>
11:	</component>
12:</components>



>大谷です.
>
>追加の質問で恐縮なんですが、
>丸岡さんの環境ではErrorPageクラスは
>S2のSmartDeployを使っていますでしょうか?
>この辺の前提がずれていると、ExceptionがS2のExternalBinding機能によって
>DIされないかもしれません.
>
>お手数ですが宜しくお願いします.
>
>07/09/28 に Shinpei Ohtani<[E-MAIL ADDRESS DELETED]> さんは書きました:
>> 大谷です.
>>
>> > 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
>> > です。
>>
>> なにか環境的なずれがあるかもしれないので、
>> 実際に使ったhtmlとPageクラス一式頂けないでしょうか.
>> 同一の環境で試してみたいので.
>>
>> すいませんが宜しくお願いします.
>>
>>
>> 07/09/28 に [E-MAIL ADDRESS DELETED]<[E-MAIL ADDRESS DELETED]>
>> さんは書きました:
>> > 丸岡です。
>> >
>> >
>> > 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 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 メーリングリストの案内