- - PR -
Strutsアプリ実行時の空白ページに関して
1
| 投稿者 | 投稿内容 | ||||
|---|---|---|---|---|---|
|
投稿日時: 2004-05-13 19:30
お世話になっております。
Strutsアプリケーション実行時のエラーに関して質問させて下さい。 Sturtsを用いて作成したアプリケーションが幾つかあるのですが、 何れのwebアプリも思うように動作しません。 具体的には、Actionクラスを実行した後、forward name="success"で 定義されている転送先ページへ画面が遷移するはずですが、 何故か遷移先が空白ページになってしまいます。 Tomcatのほうにはエラーも何も吐かれず、デバッグのしようがありません。 このような場合、どこに原因があるのでしょうか? ちなみにテストアプリケーションは、 ActionForm :: testForm Action :: testAction topのJSP :: test_form.jsp 遷移後のJSP :: test_action.jsp の4構成で、 top.jsp → testAction.do → test_action.jsp のように画面遷移します。内容は、top.jspでnameというパラメータを 入力し、その内容をtest_action.jspで表示するという簡単なものです。 struts-config.xmlは、Actionの定義に関しては、 <action path="/testAction" type="action.TestAction" name="testForm" scope="request" validate="false" > <forward name="success" path="/jsp/test_action.jsp" /> </action> ActionFormの定義は、 <form-bean name="testForm" type="form.TestForm"/> です。 アドバイスよろしくお願いいたします。 | ||||
|
投稿日時: 2004-05-13 20:00
Actionがあやしいと思います。
あと、真っ白なページが表示されるとのことですが、ブラウザからそのソースを表示させてみてみるとなんか見覚えがありますか? それとも単なる<html><body></body></html>みたいなかんじでしょうか? | ||||
|
投稿日時: 2004-05-13 20:09
返答ありがとうございます!
Actionクラスの中身が怪しいという事ですか? Actionクラスは、 ここから-- public class TestAction extends Action { public ActionForward excute( ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { TestForm testForm = (TestForm) form; String name = testForm.getName(); String email = testForm.getMailAddress(); name += ">>success"; email += ">>success"; testForm.setName(name); testForm.setMailAddress(email); request.setAttribute("testForm", testForm); return mapping.findForward("success"); } } --ここまで ちなみに、空白ページのソースは以下のようになってます。 ここから-- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML><HEAD> <META http-equiv=Content-Type content="text/html; charset=shift_jis"></HEAD> <BODY></BODY></HTML> --ここまで [ メッセージ編集済み 編集者: bird 編集日時 2004-05-13 20:14 ] | ||||
|
投稿日時: 2004-05-13 21:44
ActionFormをそのまま返しているのは初めて見ました。
普通はBeanで返すか、そのまま request.setAttribute("name", name); ってかんじなんですが。 #うーん、ActionFormってそのまんま返してもいいんですかねえ。普通のbeanとして見れば別に問題ないのかもしれませんが、私にはよく分かりません。 それはさておき、WEB-INF/jsp/test_action.jsp の方のソースもよければ見せていただけませんか。 空白ページが表示される場合は、Action にて return null; されたか、jspにてtaglibとかがエラーになったのではないかと思いますが、tomcatのログにエラーが残ってないというのでしたら、後は全然違うjsp呼んでたとか、修正したプログラムをデプロイしてないとか (^^) | ||||
|
投稿日時: 2004-05-14 06:43
ActionFormをそのままsetAttributeする必要はないと認識している
のですが、どちらの場合も動きません。 >それはさておき、WEB-INF/jsp/test_action.jsp の方のソースもよければ見せていただけませんか。 JSPのソースは以下の通りです。 test_form.jsp ここから-- <%@ page contentType="text/html; charset=Shift_JIS" %> <%@ taglib uri="/tags/struts-html" prefix="html" %> <%@ taglib uri="/tags/struts-bean" prefix="bean" %> <%@ taglib uri="/tags/struts-logic" prefix="logic" %> <%@ taglib uri="/tags/struts-nested" prefix="nested" %> <!DOCTYPE HTML PUBLIC "-//w3c//dtd html 4.0 transitional//en"> <html:html> <head> <title>Test Struts</title> </head> <body bgcolor="#FFFFFF"> <html:form action="/testAction"> <html:text name="testForm" property="name" /> <html:text name="testForm" property="mailAddress" /> <html:submit property="submit" value="submit" /> </html:form> </body> </html:html> --ここまで test_action.jsp --ここから <%@ page contentType="text/html; charset=Shift_JIS" %> <%@ taglib uri="/tags/struts-html" prefix="html" %> <%@ taglib uri="/tags/struts-bean" prefix="bean" %> <%@ taglib uri="/tags/struts-logic" prefix="logic" %> <%@ taglib uri="/tags/struts-nested" prefix="nested" %> <html:html> <head> <title>Test Struts</title> </head> <body bgcolor="#FFFFFF"> <bean:write name="testForm" property="name" /> <bean:write name="testForm" property="mailAddress" /> </body> </html:html> --ここまで です。 >空白ページが表示される場合は、Action にて return null; されたか、jspにてtaglibとかがエラーになったのではないかと思いますが、tomcatのログにエラーが残ってないというのでしたら、後は全然違うjsp呼んでたとか、修正したプログラムをデプロイしてないとか (^^) 違うjspを呼んでいる可能性と、デプロイしてない可能性はありません。 他のコンテンツではきちんとjspへフォーワードできていますし、デプロイも しています。 あとはActionがreturn nullを返しているという点ですかね・・・ そこらへんの確認はどうすればいいですか? | ||||
|
投稿日時: 2004-05-14 09:41
私だったら、フォワードする直前でログに出してみるか、 Actionクラスなんかを拡張したクラスがあればそこで取得をしてみます(笑 確かに空白ページになる場合は、 strutsタグが間違っていたり、return nullしている場合だと思います。 returnしたのがstruts-config.xmlに定義されていないかスペルミス とかも私の場合はよくありました。 [ メッセージ編集済み 編集者: わんこ 編集日時 2004-05-14 09:42 ] | ||||
|
投稿日時: 2004-05-14 10:04
Actionクラスに書いているメソッド名が「excute」だからでは
ありませんか?多分、ちゃんと「execute」メソッドをオーバーライドしないと、 Actionクラスがデフォルトで持っている「execute」メソッドを実行してしまうので、 正しいJSPを表示してくれないはずです。 (類似品として、「execute」メソッドの引数を間違えて書いている場合もあります。 私は引数ミスではまったことがありました。) | ||||
|
投稿日時: 2004-05-14 11:13
すみません、解決しました。
Actionクラスのexecuteがexcuteとなっている ミスでした・・・ こんな単純なミスで悩むなんて・・ 皆さんありがとうございました! 以後、スペルミスは気をつけます。 | ||||
1
