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

回到顶部