Javaに関する様々な情報をご紹介します。

Javaに関する様々な情報をご紹介します。
評価

0

strutsを使用してフォームのbeanが見つからない時

strutsを使用したJSPで、フォームのbeanが見つからないときに
ついての質問です。
フォームのbeanが見つからないとき、HTTPステータス500のエラー
画面に遷移する場合と、画面は表示されるパターンの2通りが
存在します。
画面が表示されるパターンは、HTMLがおかしくなってはいますが
(テーブルを定義している場所など)HTTPステータス500には
なりません。

以下がHTTPステータス500が表示されたときのエラー内容です。

exeption
javax.servlet.ServletException: USER_null という名前のbeanが見つかりません。
org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:830)
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:763)
org.apache.jsp.jsp.ipv4.CtuR346_jsp._jspService(CtuR346_jsp.java:709)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:105)
javax.servlet.http.HttpServlet.service(HttpServlet.java:860)

                           以下省略

root cause
javax.servlet.jsp.JspException: USER_null という名前のbeanが見つかりません
org.apache.struts.taglib.html.OptionsTag.getIterator(OptionsTag.java:368)
org.apache.struts.taglib.html.OptionsTag.doEndTag(OptionsTag.java:188)
org.apache.jsp.jsp.ipv4.CtuR346_jsp._jspService(CtuR346_jsp.java:549)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:105)
javax.servlet.http.HttpServlet.service(HttpServlet.java:860)

                           以下省略

画面が表示されるパターンもログには上記と同様の
JSPExeptionが出力されています。
HTTPステータス500エラーのときのみdoHandlePageExceptionが
発生しているのでしょうか?
また、画面が表示されるJSPに定義されているJavaScriptを
削除したところ、HTTPステータス500の画面になりました。
HTTPステータス500はスクリプトのエラーによるものという
ところまではネットで調べたのですが、実際にJavaScriptが
JSPにどう影響を与えるているのかがわかりません。

なぜ画面が表示されるパターンの場合のその理由をご教授ください。
また、HTTPステータス500の画面が表示される理由は、
「フォームのbeanがないから」という理由で問題ないのかも
教えていただきたいです。

以上よろしくお願いします。

2

回答

10943

閲覧

2件の回答

評価

0

JavaScriptのエラーによって、httpステータスが変わることはありえません。
サーバからクライアントにページが渡される際には、JavaScriptは実行どころか存在すらしていません。
JavaScriptは、サーバから単なる文字列の一部としてクライアントに取得され、クライアントで「この部分はJavaScript」と認識され、実行されます。

JavaScriptの「記述ミス」によって、JSPコンパイラが文字列処理/Java処理をうまく切り替えられない場合は、変わることがあり得ます。

評価

0

返信ありがとうございます。
HTTP500エラーの原因がJavaScriptの記述ミスでないことが
わかりました。

確かに画面が崩れて表示されるJSPのJavaScriptには記述ミスは
ないと思います。
同じbeanが見つからないときに片方はなぜ画面が表示されて
しまうんでしょうか・・・

質問から6ヶ月以上経過しているので、回答を書き込むことはできません。