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 回答