2012-07-13 57 views
1

搜索和搜索後,我還沒有找到解決方案。彈簧3.1窗體和列表綁定

使用Spring 3.1

我有一個表格,我希望用戶能夠添加聯繫人(POC)的多點。在我的JSP中,我有一個用於添加poc的提交按鈕。它轉到Spring Controller,從域對象(最初將爲空)獲取當前poc列表,將poc添加到列表中,然後在返回到相同視圖之前將域對象放回到模型中。然後,用戶將最終提交整個頁面,該頁面將轉到控制器並將整個對象保存爲持久性。

我已經嘗試了各種嘗試,並提出了不同的結果,只能添加一個新的覆蓋現有的一個poc,無法獲得輸入的poc顯示在窗體上。我將把我現在的代碼。

JSP:

<form:form method="post" commandName="request"> 

    ... 

    <h2>POC:</h2> 
    <input type="text" name="newPoc"/> 
    <input type="submit" name="addPoc" value="Add POC"/> 

    <table> 
     ... 
     <c:forEach items="${request.pointOfContacts}" var="poc" varStatus="vs"> 
      <tr> 
       <td><form:label path="pointOfContacts[${vs.index}].name/></td> 
        ..... 
     </c:forEach> 

     ...... 

    </table> 

</form:form> 

春控制器:

@RequestMapping(value="/request", method=RequestMethod.POST, param="addPoc") 
public Sring addPoc(@RequestParam String newPoc, MyRequest req, Model model) { 
    PointOfContact poc = new PointOfContact(); 
    poc.setName(newPoc); 
    List<PointOfContact> pocs = req.getPointOfContacts(); 
    pocs.add(poc); 
    req.setPointOfContacts(pocs); 
    model.addAttribute("request", req); 
    return "requestForm"; 
} 

域對象

@Entity 
public class MyRequest { 
    ... 

    @OneToMany(Cascade=CascadeType.ALL) 
    private List<PointOfContact> pointOfContacts = new ArrayList<PointOfContact>(); 

    ..... 
} 

@Entity 
public class PointOfContact { 
    ... 

    private String name; 

    .... 
} 

沒有任何人有任何解決方案?我看過關於AutoPopulateList的各種帖子,這是一個解決方案嗎?如果是這樣的話,我將如何在這個例子中使用它。

+0

控制器的完整代碼是什麼?你使用@SessionAttributes嗎? – 2012-07-13 13:50:44

回答

5

是的,你應該使用AutoPopulatingList,example。這將需要在MyRequest實體中進行更改。

+1

最好不要簡單地鏈接到另一個頁面,而是要把你的答案放在這裏。 example1現在消失了,因此答案是無用的。 – checklist 2015-04-30 07:09:57