2013-08-27 36 views
1

我有jsp頁面與以下細節的Struts 2.0 - 越來越多發DATAS通過模型驅動

<s:form>

輸入FNAME:
輸入L-NAME:

地址1:

進入市:
Enter Pin:

地址2:

輸入城市:
輸入引腳:

地址3:

輸入城市:
輸入引腳:

</s:form>

現在我需要取一個使用模型驅動功能將條目放入單個DTO對象中。

但是我怎麼能得到地址字段的多條目。 DTO類將爲每個地址字段包括城市和引腳包含相同的內容。例如:The 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

你應該用你的模型索引屬性。 –

+0

剛纔我試過用 String [] city; 字符串[]引腳;我正在獲取內容 – abyin007

+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"/>
輸入L-NAME:<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>