1

经过搜索和搜索,我还没有找到解决方案。

使用 Spring 3.1

我有一个表单,我希望用户能够添加多个联系人 (poc)。在我的 JSP 中,我有一个用于添加 poc 的提交按钮。它进入 Spring 控制器,从域对象(最初为空)中获取当前的 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;

  ....
}

有没有人有任何解决方案?我看过关于 AutoPopulatingList 的各种帖子,这是一个解决方案吗?如果是这样,我将如何在此示例中使用它。

4

1 回答 1

5

是的,您应该使用 AutoPopulatingList,例如。这将需要更改 MyRequest 实体。

于 2012-07-13T14:51:19.363 回答