プロが教えるわが家の防犯対策術!

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を返り値で返すとオール×だと思っているのですが、この考え方は正しいでしょうか? 

大変お恥ずかしい限りですが、ご存知の方がいらっしゃいましたら教えて頂きたく宜しくお願い致します。

A 回答 (1件)

A.


executeの返り値(ActionMapping)にnullを返した場合、他への転送を行いません。
<forward name="success" path="/ShoppingUpdate.jsp"/>
ここで転送先を指定しているので、
return mapping.findForward("success"); のように
『succcess』を返せばShoppingUpdate.jspに画面が遷移すると思います。

B.
オール×の意味が良く分かりませんが…返り値を受け取るメソッド次第でしょう。

この回答への補足

A.
回答ありがとうございました。できました! 

B.
こちらもありがとうございます。
nullを返り値として処理しているのを見た事が無かったので・・・。
(エラーは大体Nullpointer。)

補足日時:2008/07/31 00:40
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!