2011-11-10 84 views
2

我是Java Spring Framework的新手,我在新項目中有一個需求。如何使用java spring框架將多行從web表單插入數據庫

使用Spring框架,我有一個POJO類的set和get方法。 我也有中級java服務和web類。我使用<form>標記來映射從jsp到bean類,並能夠使用單個對象執行所有操作。

但我的問題是我怎麼能做更多的一個對象(記錄)相同的工作。

簡而言之: 如何使用我的jsp頁面中的輸入數據一次將7行(記錄)插入到數據庫表中。我如何接受來自我的jsp頁面的輸入參數並創建與7行對應的7個對象,然後將它們插入點擊提交按鈕?

請爲此提供一些指導。

+0

使用索引的屬性:數據[0] .name和例如。請參閱http://stackoverflow.com/questions/1429760/command-objects-in-spring –

回答

8

我可以通過讓另一個POJO作爲一個容器與您的POJO列表一起實現。

這應該是這樣的:

public class PojoForm { 
    private List<Pojo> pojos; 
    public List<Pojo> getPojos() { 
     return pojos; 
    } 
    public void setPojos(List<Pojo> pojos) { 
     this.pojos = pojos; 
    } 
} 

然後在控制器上,使用此容器而不是實際的POJO作爲一個模型屬性。

@ModelAttribute("pojoForm") 
public PojoForm populatePojos() { 
    // Don't forget to initialize the pojos list or else it won't work 
    PojoForm pojoForm = new PojoForm(); 
    List<Pojo> pojos = new ArrayList<Pojo>(); 
    for(int i=0; i<2; i++) { 
     pojos.add(new Pojo()); 
    } 
    pojoForm.setPojos(pojos); 
    return pojoForm; 
} 

@RequestMapping(method=RequestMethod.POST) 
public String saveForm(@ModelAttribute("pojoForm") PojoForm pojoForm) { 
    for(Pojo pojo : pojoForm.getPojos()) { 
     service.save(pojo); 
    } 
    return "theview.jsp"; 
} 

然後在視圖應該是這個樣子:

<form:form commandName="pojoForm" method="POST"> 
    <!-- Pojo 1 --> 
    <form:input path="pojos[0].a" /> 
    <form:input path="pojos[0].b" /> 
    <form:input path="pojos[0].c" /> 
    <!-- Pojo 2 --> 
    <form:input path="pojos[1].a" /> 
    <form:input path="pojos[1].b" /> 
    <form:input path="pojos[1].c" /> 
</form:form> 

a,b和c是POJO類的屬性。

您也可以在列表中這樣直接循環:

<form:form commandName="pojoForm" method="POST"> 
    <c:forEach items="${pojoForm.pojos}" varStatus="i"> 
     <form:input path="pojos[${i.index}].a" /> 
     <form:input path="pojos[${i.index}].b" /> 
     <form:input path="pojos[${i.index}].c" /> 
    </c:forEach> 
</form:form> 
+0

嗨菲利克斯感謝您的迴應。我有這個標準在我心中,但問題是有數百個JSP頁面,我必須顯示100個像這樣的不同對象(以表格的格式),所以我將不得不爲所有似乎是POJO的容器創建獨特的容器小,但很長。如果有的話,我正在尋找一些通用的方法。同時感謝用這種簡單的方式來解釋這個解決方案:) – JBT

+0

不客氣:)你可以通過使'PojoForm'類通用'PojoForm '來增加一些通用性,因此它可以用於多個pojos。 –

+0

再次感謝我不知道爲什麼它不會出現在我的腦海裏。 :(我試圖改變代碼和使用列表而不是列表,但現在應用程序不工作它是拋出java.lang.IndexOutOfBoundsException:索引:0,大小:0 \t在java.util.ArrayList.RangeCheck(未知源) \t at java.util.ArrayList.get(Unknown Source) 異常:不明白究竟是什麼問題,同樣在視圖部分,我們爲不同的POJO添加了不同的條目(對於POJO1和POJO2 ...如上所述)是否有任何方式循環在JSP中有POJO列表中的次數 – JBT

相關問題