[Seasar-user:10756] [Teeda]エラーページについて
[E-MAIL ADDRESS DELETED]
[E-MAIL ADDRESS DELETED]
2007年 9月 28日 (金) 01:07:00 JST
いつもお世話になっております。
Teeda1.0.11-RC1 の環境でエラーページの表示のテストをしています。
最終目的は、独自に定義したユーザ例外毎にエラーページを切り替えることです。
(1) teedaErrorPage.diconに以下【teedaErrorPage.dicon その1】のように設定し、
適当な画面でわざと例外が発生するようなロジックを記述すると、
とりあえずエラーページで設定した画面に遷移することができました。
(2)次に、ユーザ例外「TestException」クラスを作成し、teedaErrorPage.diconに
【teedaErrorPage.dicon その2】のように設定しました。
※[Seasar-user:8941]を参考にしました。
(3) 適当な画面のinitialize() メソッド内で例外を以下のように発生させてみたところ
意図するエラーページ(error2.html)に遷移せずにerror.htmlに遷移してしまいました。
public void initialize() throws TestException{
throw new TestException();
}
上記のような使い方は何か間違いがあるのでしょうか?
また、他に何か設定が足りなかったりするのでしょうか?
【teedaErrorPage.dicon その1】──────────────────────
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container 2.4//EN"
"http://www.seasar.org/dtd/components24.dtd">
<components namespace="teedaErrorPage" >
<component class="org.seasar.teeda.core.util.ServletErrorPageManagerImpl">
<initMethod name="addErrorPage">
<arg>@[E-MAIL ADDRESS DELETED]</arg>
<arg>"/view/error/error.html"</arg>
</initMethod>
</component>
</components>
【teedaErrorPage.dicon その2】──────────────────────
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container 2.4//EN"
"http://www.seasar.org/dtd/components24.dtd">
<components namespace="teedaErrorPage" >
<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>
</components>
【コンソール上のエラーログ】────────────────────────
DEBUG 2007-09-28 01:02:54,619 [http-8080-1] BEGIN test.TestPage#initialize()
DEBUG 2007-09-28 01:02:54,647 [http-8080-1] トランザクションを開始しました
DEBUG 2007-09-28 01:02:54,649 [http-8080-1] トランザクションをロールバックしました
DEBUG 2007-09-28 01:02:54,649 [http-8080-1] END test.TestPage#initialize() Throwable:test.exception.TestException
DEBUG 2007-09-28 01:02:54,659 [http-8080-1] org.seasar.framework.exception.InvocationTargetRuntimeException: [ESSR0043]test.TestPage$$EnhancedByS2AOP$$f2e328が呼び出した対象が不正です。理由はtest.exception.TestException
DEBUG 2007-09-28 01:02:54,851 [http-8080-1] java.lang.NullPointerException: FacesContext
2007/09/28 1:02:54 org.apache.catalina.core.StandardWrapperValve invoke
致命的: サーブレット facesServlet のServlet.service()が例外を投げました
java.lang.IllegalStateException: レスポンスをコミットした後でフォワードできません
at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:302)
at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:292)
at org.seasar.teeda.core.util.ServletExternalContextUtil.dispatch(ServletExternalContextUtil.java:156)
at org.seasar.teeda.core.context.servlet.ServletExternalContextImpl.dispatch(ServletExternalContextImpl.java:114)
at org.seasar.teeda.core.util.ServletErrorPageManagerImpl.handleException(ServletErrorPageManagerImpl.java:56)
at org.seasar.teeda.core.lifecycle.LifecycleImpl.handleException(LifecycleImpl.java:116)
at org.seasar.teeda.core.lifecycle.LifecycleImpl.render(LifecycleImpl.java:135)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:95)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.seasar.framework.container.hotdeploy.HotdeployFilter.doFilter(HotdeployFilter.java:69)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.seasar.framework.container.filter.S2ContainerFilter.doFilter(S2ContainerFilter.java:64)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.seasar.extension.filter.EncodingFilter.doFilter(EncodingFilter.java:69)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:261)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:581)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Unknown Source)
Seasar-user メーリングリストの案内