1

JSPページからActionクラスの属性を変更しようとすると、たとえばフォームで変更できますが、Actionクラスで宣言されたオブジェクトの属性を変更しようとすると、変更できません。

モデルクラス:

public class User { 
  private String name;  
  public User(){
    this.setName("Unknown");
  } 
  public String getName() {
    return name;
  }
  public void setName(String name) {
    this.name = name;
  }
}

アクションクラス:

public class UserAction{
  private User user;
  public String execute(){
    user = new User();
  }
  public User getUser(){
    return user;
  }
  public void setUser( User user ){
    this.user = user;
  }
}

Userクラスは、コンストラクターのdefautによって属性に値を設定し、それにアクセスできます。

<s:property value="user.name" />

しかし、フォームを介してそれを変更し、フォームの後にターゲットページにその値を印刷しようとすると、デフォルト値が得られます。

<s:form action="welcomeAction" >
  <s:textfield name="user.name" label="User name " />
</s:form>

前もって感謝します :)

4

2 に答える 2

0

私は struts.xml に持っていました:

<action name="welcomeAction" class="helloworld.action.UserAction">
<result>/welcome.jsp</result>
</action>

だから、私は "done" を返すメソッド setUserFields を Action クラスに作成しました:

<action name="welcomeAction" class="helloworld.action.UserAction" method="setUserFields">
<result name="done">/welcome.jsp</result>
</action>
于 2012-07-12T19:31:12.563 に答える