[Wicket-ja-user 169] Re: Internalエラー時のメッセージの受け取り

Back to archive index

takayuki hayashi tkbyt****@gmail*****
2008年 7月 24日 (木) 20:41:44 JST


林です。

Wicketのバージョンは1.3.xということと、
独自のInternalErroPageをFooErrorPageとした場合で話を進めさせていただきます。

まず、org.apache.wicket.protocol.http.WebRequestCycleクラスを継承したクラスを作成し、onRuntimeExceptionメソッドをオーバーライドします。
こんな感じです。
--------------
public class FooRequestCycle extends WebRequestCycle{

    public TestRequestCycle(WebApplication application, WebRequest
request, Response response) {
        super(application, request, response);
    }

    @Override
    public Page onRuntimeException(Page page, RuntimeException e) {

        //第一引数のpageはExceptionが発生したページクラスのインスタンスです。
        //Exception発生時の状態が保持されているので、必要であればダウンキャストして
        //フィールドの値を取得したりできます。

        //エラーページのコンストラクタにExceptionを渡す。
        return new FooErrorPage(e);
    }
}

----------


次にWebApplicationを継承したクラス内にてnewRequestCycleメソッドをオーバーライドします。
そしてそのメソッド内で上記で作成したFooRequestCycleを返します。
こんなかんじです。

-----------
public class FooApplication extends WebApplication{

    @Override
    public Class getHomePage() {
        return FooPage.class;
    }

    @Override
    public RequestCycle newRequestCycle(Request request, Response response) {
        return new FooRequestCycle(this,(WebRequest)request,
(WebResponse)response);
    }
}

----------
これで一応Errorページへエラー情報を渡すことは可能です。
ただ、FooRequestCycle#onRuntimeExceptionで渡されるExceptionはInvocationTargetException
とWicketRuntimeExceptionにラップされているので、instanceof等で実際に発生したExceptionを比較するにはe.getCause().getCause()としないといけないのですが。。(あくまで我流なので、どなたかもっとスマートなやり方を知っている方はいませんか?)



2008/07/24 12:26 Hiromichi Kishi <h.kis****@gmail*****>:
> 岸@Kishiです。
>
> 以前、InternalErrorPageの変更の方法を質問しましたところ、
> WebApplicationで
>
> setApplicationSettings().setInternalErrorPage(エラークラス.class);
>
> とやれば変更することがわかりました。(その節はありがとうございました。)
>
> 今回の質問は、このInternalErrorPageが出る前に見ていたページや発生した例外のメッセージを受け取る方法についてです。
> InternalErrorPageでエラーについてまとめてログを取りたいと思っているのですが、方法がわかる方がいましたらご教示ください。
>
> よろしくお願いします。
>
> _______________________________________________
> Wicket-ja-user mailing list
> Wicke****@lists*****
> http://lists.sourceforge.jp/mailman/listinfo/wicket-ja-user
>




Wicket-ja-user メーリングリストの案内
Back to archive index