如何将更新的对象列表发送到Spring MVC控制器

时间:2017-09-26 12:14:24

标签: java spring-mvc jquery-ui-sortable

假设我有类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(..);
}

但用户始终为空。

如何更新当前用户列表并在控制器中获取?

1 个答案:

答案 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>

我想它会起作用。隐藏输入标记的原因仅在于传递不显示而是数据。