我有jsp页面,其中包含以下详细信息
<s:form>
输入fname:
输入lname:
地址1:
输入城市:
输入Pin:
地址2:
输入城市:
输入Pin:
地址3:
输入城市:
输入Pin:
</s:form>
现在我需要使用模型驱动功能将所有条目提取到单个DTO对象中。
但是我如何获得多个地址字段条目。 DTO类将为每个地址字段(即city和pin)包含相同的内容。例如: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
或
是否有其他选项可以获得多个条目。
答案 0 :(得分: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"/>
输入Pin:<s:textfield name="addresses[0].pin"/>
地址2:
输入城市:<s:textfield name="addresses[1].city"/>
输入Pin:<s:textfield name="addresses[1].pin"/>
地址3:
输入城市:<s:textfield name="addresses[2].city"/>
输入Pin:<s:textfield name="addresses[2].pin"/>
</s:form>