2012-07-13 56 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