Spring MVC中的Array @ModelAttribute扩展
*编辑:我可能必须使用列表,但适用相同的原则。
我正在尝试使用@ModelAttribute批注将数组绑定到表单。表中将填充数组的内容(数组中的每个元素对应于表中的一行)。该数组可以填充数据,也可以在绑定时为空。用户可以向表中添加行(应该向表中添加元素)。
我的问题是,如果在传递数组之前已经定义了元素,如何将其添加到数组中?提交表格时,会自动发生吗?
<body> <h1>Members</h1>
<form:form action="configure" modelAttribute="members" method="post" id="member-form">
<table id="member-table" class="table">
<thead>
<tr>
<th>Name</th>
<th></th>
</tr>
</thead>
<tbody id="member-table-body">
<c:forEach items="${members}" var="member" varStatus="i" begin="0" >
<tr class="member">
<td><form:input path="members[${i.index}].name" id="name${i.index}" /></td>
<td><a href="#" class="remove">Remove</a></td>
</tr>
</c:forEach>
</tbody>
</table>
<input type="submit" value="Save" id="submit" />
<a href="#" id="add">Add Member</a>
<a href="?f=">Reset List</a>
</form:form>
</body>
__
$(document).ready(function(){$('#add').click(function(e) {
e.preventDefault();
//Add a member
//Get the number of rows that are in the table
var memberTable = $('#member-table-body');
var numRows = memberTable.children('tr').length
//Add row to the table.
// memberTable.innerHTML(
return false;
});
$('.remove').on('click', function(e) {
e.preventDefault();
$(this).parent().parent().remove();
return false;
});
});
回答:
您需要创建一个包装列表的Model类,并在控制器中使用此Model。
就像是:
package net.viralpatel.spring3.form;import java.util.List;
public class ContactForm {
private List<Contact> contacts;
public List<Contact> getContacts() {
return contacts;
}
public void setContacts(List<Contact> contacts) {
this.contacts = contacts;
}
}
然后在JSP中将其用作:
<c:forEach items="${contactForm.contacts}" var="contact" varStatus="status"> <tr>
<td align="center">${status.count}</td>
<td><input name="contacts[${status.index}].firstname" value="${contact.firstname}"/></td>
<td><input name="contacts[${status.index}].lastname" value="${contact.lastname}"/></td>
<td><input name="contacts[${status.index}].email" value="${contact.email}"/></td>
<td><input name="contacts[${status.index}].phone" value="${contact.phone}"/></td>
</tr>
</c:forEach>
参见本教程:Spring MVC:使用Bean列表提交多行表单
以上是 Spring MVC中的Array @ModelAttribute扩展 的全部内容, 来源链接: utcz.com/qa/401371.html