strutsで、JSP→アクションクラス→JSPの遷移ができない。
Strutsを勉強中の者です。
初心者的な質問で大変恐縮ですが、どこを調べても原因が分からなかったので、最終手段としてこちらに質問させて頂く事にしました。
どなたかご存知の方がいらっしゃいましたらご教授頂けないでしょうか。
・概要
strutsで、JSP→クラスの実行→JSPの遷移ができない。
・環境
WindowsXP
Eclipse3.3
Tomcat5.5
GEF3.3
struts-1.3.8
JDK1.5
・詳細
「Eclipseパーフェクトマニュアル ベストセレクション」
という本をもとに勉強しています。
ここのStrutsの例題で
(1).簡易家計簿 <メニュー画面>(index.jsp)を表示
(2).同画面のリンク(ShoppingInitEntry.do)をクリック
(3).リンク(ShoppingInitEntry.do)に関連づけられているクラス(ShoppingInitEntryAction)の実行
(4).データ入力画面(ShoppingUpdate.jsp)への遷移
という事をやっています。
実際に設定して、動かして見ましたが、
Eclipseでデバッグを貼っていると(3)まで動作しているのが分かるのですが、(4)の画面まで遷移しません。
具体的には、ShoppingInitEntry.doのリンクが
ブラウザのアドレスバーに表示され、画面が真っ白の状態になります。
(データ入力画面は表示されない)
尚、直接(4)の画面(ShoppingUpdate.jsp)を開くと、
データ入力画面がエラーも無く表示されます。
----
struts-config.xmlの設定が悪いのかと思ったのですが、
問題は無さそうに思います。(必要と思われる部分を抜粋)
<struts-config>
<global-forwards>
<forward name="ShoppingInitEntry" path="/ShoppingInitEntry.do"/>
</global-forwards>
<action-mappings>
<action path="/ShoppingInitEntry" type="MoneyBooks.ShoppingInitEntryAction" input="/index.jsp">
<forward name="success" path="/ShoppingUpdate.jsp"/>
</action>
</action-mappings>
</struts-config>
----
(3)ShoppingInitEntryActionのソースは、下記の通りです。
public class ShoppingInitEntryAction extends Action {
@Override
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
return super.execute(mapping, form, request, response);
}
}
上記のreturn super.execute( ~の部分では nullを返しているようです。
Eclipseのコンソールにメッセージは表示されません。
A.原因は、struts-config.xmlでしょうか? それともクラスがnullを返している為に画面遷移しないのでしょうか?
そもそもsuper.executeのソースをjadのデコンパイルで追ったのですが、返り値としてNullしか返していない状態です。
B.また、馬鹿な質問ですが、そもそもjavaではnullを返り値で返すとオール×だと思っているのですが、この考え方は正しいでしょうか?
大変お恥ずかしい限りですが、ご存知の方がいらっしゃいましたら教えて頂きたく宜しくお願い致します。
お礼
早速のご回答ありがとうございます。 JSP側で実現するほうを考えさせていただきたいと思います。 現在のところ 検索を走らせたくないケースはないので。 でも、将来的なことも考えたほうがいいのかもしれませんけど・・・。