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

Java 6 Update 22
struts2.2.1
です。

次のとおり各クラスとstruts.xmlを作成しました。
Top_guestLoginアクションを実行してHelloUserクラスに遷移することはできましたが、変数isGuestModeの値が受け渡しされません。

public class Top implements SessionAware {
private boolean isGuestMode = false;
public boolean getIsGestMode() {
return isGuestMode;
}
public String guestLogin() throws Exception {
isGuestMode = true;
return "success";
}
}

public class HelloUser {
private boolean isGuestMode;
public boolean getIsGuestMode() { return isGuestMode; }
public void setIsGestMode(boolean b){
isGuestMode = b;
}
public String execute() throws Exception {
return "success" ;
}
}


struts.xml
<package name="example" extends="struts-default">
<action name="HelloUser" class="example.HelloUser">
<result>/example/HelloUser.jsp</result>
</action>
<action name="Top_guestLogin" method="guestLogin" class="example.Top" >
<result name="success" type="chain" >HelloUser</result>
</action>
</package>

何方かアドバイスをお願い致します。

A 回答 (3件)

こんにちは。



せっかくStruts2使ってるんだから、Resultアノテーションで記述すればいいのに・・・。
まぁどっちゃでもいいんですが。
とりあえず、変数名と各ゲッター、セッターの名前がどうにも・・・。
private変数の値は、publicなゲッター、セッターを通して受け渡されるので、名前は統一しましょう。
(多分、某ページを参考に作られたと思うが、某ページの文章が無茶苦茶。GuestだったりGestだったり、挙句の果てにはGeustって・・・、何?)
    • good
    • 0
この回答へのお礼

こんばんは。

最近多忙でお礼が遅くなってすみません。
実は最初はアノテーションで記述していたのですが、どうしても動作しなくて某ページを参考にしました・・・。

それでアクセッサメソッドを統一してみたのですが、やはり値の受け渡しはされませんでした。
結局、strutsのバージョンを2.1.8.1とすることで値は受け渡されました。
2.2.1はちょっと問題があるようなので使用を控えたいと思います。
(struts同封のサンプルを確認してもchainで値の受け渡しが行われていなかったので・・・。)

ご回答ありがとうございました。

お礼日時:2010/11/20 22:40

#1の方が書いてる事の繰り返しになりますが、


isGuestModeのアクセッサのスペルが間違っているので、ValueStackに同じくプロパティ名で載りません。
getIsGestModeではなく、
getIsGuestMode
setIsGestModeではなく、
setIsGuestMode
ですね。
    • good
    • 0
この回答へのお礼

こんばんは。

アクセッサメソッドを統一してみたのですが、やはり値の受け渡しはされませんでした。
strutsのバージョンを2.1.8.1とすることで値は受け渡されましたので、2.2.1は使用を控えたいと思います。

ご回答ありがとうございました。

お礼日時:2010/11/20 22:41

2.2.2でfixされるそうです。



参考URL:https://issues.apache.org/jira/browse/WW-3488
    • good
    • 0
この回答へのお礼

やっぱり2.2.1では駄目なんですね。
ありがとうございました。

お礼日時:2010/11/24 22:27

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