*编辑:我可能必须使用列表,但同样的原则适用。
我正在尝试使用 @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;
});
});</p>