[Seasar-user:19356] [ETDA0027]JSP 例外について
落合 あずみ
[E-MAIL ADDRESS DELETED]
2010年 2月 19日 (金) 16:20:00 JST
お世話になります。落合と申します。
J2SDK 1.5.0.09
Tomcat5.5.23
s2-framework-2.4.39
teeda-extension-1.0.13-sp7
でWEBシステムを開発しています。
以下のメッセージが画面(allMessages)に表示されてしまいます。
[ETDA0027]JSP例外が発生しました。理由はjavax.servlet.jsp.JspException
状況としては、
画面Aから画面Bへ遷移し、
画面Bにてブラウザの戻るボタンをクリックすると、
画面BのallMessagesにメッセージが表示されます。
今回のシステムでは、ブラウザの戻るボタン対応として
すべての画面に window.history.forward() が記述されています。
また、個人情報が含まれるページがあるため、
ローカルキャッシュをしないように
レスポンスのヘッダと、HTMLに<meta>タグのhttp-equivで
Cache-Control、Pragma、Expiresの設定を行っています。
画面Bでブラウザの戻るボタンをクリック後の、requestDumpFilterのログを見てみると、
画面A before
画面Aの表示処理中に、画面B before
Exception発生
画面A after
画面Aのafter内で出力↓
[request]teeda.jsf.error.message=[ETDA0027]JSP例外が発生しました。理由はjavax.servlet.jsp.JspException
画面B after
画面Bのafter内で出力
[request]exception=org.seasar.teeda.extension.exception.JspRuntimeException: [ETDA0027]JSP例外が発生しました。理由はjavax.servlet.jsp.JspException
・・・となっているので、ローカルキャッシュがないために
リロード?しているのかなと思いました。
そもそも、ヘッダに設定をしないと、画面Aのinitialize()も呼ばれていないので。。
過去のログ等をいろいろ調べた結果、
「ブラウザのコネクションが切断されたために発生する例外」のような記述を見つけました。
確かに、画面Aで表示する内容が多い場合はExceptionが発生し、
内容が少ない場合には発生しません。
現在は、画面Bから画面Aに遷移する際、正規のルート(画面Bに配置した戻るボタン)で
画面Aが呼ばれた場合、@RedirectScopeを指定した変数に値を設定し、その内容で区別しています。
画面Aには遷移しても、すぐに画面Bに戻ってしまうので、コネクションが切断された場合であれば
特にエラー扱いではなくても構わないと考えています。
発生したExceptionを画面に表示しない、
または、画面Bからブラウザの戻るボタン or 画面に配置されたボタンか判断できる方法など
ありましたら、教えていただけないでしょうか。
だいぶ長くなってしまいましたが、
よろしくお願い致します。
以上です。
よろしくお願い致します。
Seasar-user メーリングリストの案内