1

次の詳細を含むjspページがあります

<s:form>

fname を入力してください:
lname を入力してください:

住所(1:

都市を入力してください:
ピンを入力してください:

アドレス2:

都市を入力してください:
ピンを入力してください:

住所3:

都市を入力してください:
ピンを入力してください:

</s:form>

ここで、モデル駆動型機能を使用して、すべてのエントリを単一の DTO オブジェクトにフェッチする必要があります。

しかし、アドレス フィールドの複数のエントリを取得するにはどうすればよいですか。DTO クラスには、都市とピンなどの各住所フィールドに同じものが含まれます。例: DTO クラスは次のようになります。

public class Details {

String fname;
String lname;
String city;
String pin;

public String getFname() {
    return fname;
}
public void setFname(String fname) {
    this.fname = fname;
}
public String getLname() {
    return lname;
}
public void setLname(String lname) {
    this.lname = lname;
}
public String getCity() {
    return city;
}
public void setCity(String city) {
    this.city = city;
}
public String getPin() {
    return pin;
}
public void setPin(String pin) {
    this.pin = pin;
}
}

または、使用する場合にのみ取得できます

String[] city;
String[] pin;

また、入力タグの名前はどうすればよいですか。なるか

<input type="text" name="city" /> for all city entries 

また

複数のエントリを取得する他のオプションはありますか。

4

1 に答える 1

2

フォームが次のようになっているとします。

public class MyForm {
    private List<Details> addresses;
    private String fname;
    private String lname;

    public List<Details> getAddresses() {
        return this.addresses;
    }

    public void setAddresses(List<Details> addresses) {
        this.addresses = addresses;
    }

    /*

    getters and setters for fname and lname properties;    

    */
}

実装しているアクションはModelDriven次のようになります。

public class MyAction extends ActionSupport implements ModelDriven<MyForm> {
     private MyForm myForm = new MyForm();

     public String execute() {
          /*

          ....


          */
     }

     @Override
     public MyForm getModel() {
          return this.myform;
     }
}

JSP ファイルでは、これらの値を次のように設定できます。

<%@ taglib prefix="s" uri="/struts-tags"%>
<s:form action="your_action" method="post">

fname を入力してください: <s:textfield name="fname"/>
lname を入力してください:<s:textfield name="lname"/>

住所(1:

都市を入力してください:<s:textfield name="addresses[0].city"/>
ピンを入力してください: <s:textfield name="addresses[0].pin"/>

アドレス2:

都市を入力してください:<s:textfield name="addresses[1].city"/>
ピンを入力してください: <s:textfield name="addresses[1].pin"/>

住所3:

都市を入力してください:<s:textfield name="addresses[2].city"/>
ピンを入力してください: <s:textfield name="addresses[2].pin"/>

</s:form>

于 2013-08-27T19:23:00.437 に答える