[Seasar-user:10810] Re: [Teeda]エラーページについて
Shinpei Ohtani
[E-MAIL ADDRESS DELETED]
2007年 10月 1日 (月) 20:25:05 JST
大谷です.
いえいえ.解決してよかったです.
宜しくお願いします
07/10/01 に [E-MAIL ADDRESS DELETED]<[E-MAIL ADDRESS DELETED]>
さんは書きました:
> お世話になります。
> 丸岡です。
> 下記の件ですが、問題解決しました。
>
> 原因は 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 mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-user
>
--
=============================
Shinpei Ohtani
[E-MAIL ADDRESS DELETED]
=============================
Seasar-user メーリングリストの案内