takayuki hayashi
tkbyt****@gmail*****
2008年 7月 24日 (木) 20:45:14 JST
林です。 すみません、ソースに記述ミスがありました。FooRequestCycleのコンストラクタをTestRequestCycleと記述してしまってます。。。。 ごめんなさい。 2008/07/24 20:41 takayuki hayashi <tkbyt****@gmail*****>: > 林です。 > > 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 >> >