假设我有类User,我创建了一个包含Users列表的类,并将此类对象添加到Model:
public class User {
private String firstName;
private String lastName;
private Integer orderNumber;
...//getters and setters
}
public class Users {
private List<User> users;
...//getter and setter
}
My Vies页面:
<form role="form" method="POST" action="save" modelAttribute="users">
<table>
<thead>
<tr>
<th/>
<th>First Name</th>
<th>Last Name</th>
</tr>
</thead>
<tbody>
<c:forEach var="user" items="${users}">
<tr>
<td>${user.orderNumber}</td>
<td>${user.firstName}</td>
<td>${user.lastName}</td>
</tr>
</c:forEach>
</tbody>
</table>
<button id="saveButton" type="submit">Save</button>
</form:form>
...
<script>
$("tbody").sortable({
stop: function(event, ui) {
$(this).find('tr').each(function(i) {
$(this).find('td:first').text(i+1);
});
}
}).disableSelection();
</script>
当我点击保存按钮时,我想将用户列表与更新的订单号绑定到控制器上的post方法:
@RequestMapping (method = POST, path = "/save")
public ModelAndView saveUsers(@ModelAttribute("users") Users users) throws Exception {
....
return new ModelAndView(..);
}
但用户始终为空。
如何更新当前用户列表并在控制器中获取?
答案 0 :(得分:0)
我找不到&#t;标记&#39;在你的HTML代码中。
如果标记存在,则无法传递给saveUsers
控制器,因为您没有输入标记。表单标记可以使用输入标记传递您想要的每个数据。
<form:form role="form" method="POST" action="save" modelAttribute="users">
<table>
<thead>
<tr>
<th/>
<th>First Name</th>
<th>Last Name</th>
</tr>
</thead>
<tbody>
<c:forEach var="user" items="${users}">
<form:hidden path="orderNum" value="${user.orderNum}"/>
<form:hidden path="firstName" value="${user.firstName}"/>
<form:hidden path="lastName" value="${user.lastName}"/>
<tr>${user.orderNum}</tr>
<tr>${user.firstName}</tr>
<tr>${user.lastName}</tr>
</c:forEach>
</tbody>
</table>
<button id="saveButton" type="submit">Save</button>
</form:form>
我想它会起作用。隐藏输入标记的原因仅在于传递不显示而是数据。