我使用Spring 3.0.2,Hibernate 3,5(不确定)和JSP来创建Web应用程序。在创建一个简单的表单(由具有简单属性的pojo支持)时,一切正常。但是现在我正在尝试创建这样的形式:
我希望能够在一个页面上编辑所有信息,这意味着编辑名称,指定城市和电话号码。
你们中的任何一个人都可以指导我如何绑定嵌套集合吗?
我应该在控制器中创建ModelAttribute(“contactsForPerson”)并将其传递给jsp并在我的jsp中使用它吗?
<form:form method="post" modelAttribute="person" >
<table>
<tr>
<td><form:hidden path="idPerson"/></td>
</tr>
<tr>
<td>Name</td>
<td><form:input path="name" value="${person.name}"/></td>
</tr>
<c:forEach items="${contactsForPerson}" var="a">
<tr>
<td>City</td>
<td><form:input path="contacts.city" value="${a.city}"/></td>
</tr>
<tr>
<td>Phone Number</td>
<td><form:input path="contacts.phoneNumber" value="${a.phoneNumber}"/></td>
</tr>
</c:forEach>
</table>
问题本身归结为如何将Person的specity path属性设置为绑定联系人:)
提前感谢您的建议
答案 0 :(得分:0)
看看这个类似的stackoverflow question:
根据答案,最好的方法是将集合设置为列表
<form:input path="contacts[0].phoneNumber"/>
或作为地图:
<form:input path="contacts['contactId'].phoneNumber"/>
您可以使用惰性列表(Spring Autopopulating List,Apache Commons Lazy List,Guava lists)或懒惰地图(Guava's Map Maker,Apache Commons lazy map),这样您就不会当你在列表或地图中需要它们时,不得不担心创建一个新对象。就在你进入一个尚未初始化的位置时,list / map会自动创建一个新的对象实例。