如何更改表单中列表项的顺序?

时间:2012-06-15 12:04:34

标签: javascript jsp spring-mvc

我制作了一个Spring MVC应用程序,向用户显示项目列表 - 如何更改JSP中这些项目的顺序,以便将新订单提交给服务器?

例如,用户获得以下列表:

  1. 宠物猫
  2. 宠物狗
  3. 宠物鸟
  4. 该表格由以下表格组成:

    <form:form action="/modifypetlist.do" method="POST" modelAttribute="petList">
      <fieldset>
        <div>
          <ul id="sortable">
            <c:forEach items="${petList.list}" varStatus="vs">
              <li class="ui-state-default">
               <form:label path="list[${vs.index}].pet">Pet</form:label>
               <form:input path="list[${vs.index}].pet" />
              </li>
           </c:forEach>
          </ul>
         </div>
         <input type="submit" value="send">
       </fieldset>
    </form:form>
    

    我添加了一些Javascript,使用户可以拖放列表中的行,例如将狗线移到Cat线上方。

    如何将此信息传达给服务器? (我怎样才能从表单字段重建petList模型?)我现在可以在提交表单后读取服务器中的列表,但列表项按原始顺序排列,即使我更改了表单中的名称(例如Cat。 - &gt;鼠标)

2 个答案:

答案 0 :(得分:1)

那是因为它们的主键(它是一个索引)自然是排序的,所以通常是行的id。

尝试在表格中添加“排名”字段,您将在数据排序后更新,并按排名对结果进行排序。

答案 1 :(得分:1)

您需要在持久层中保留订单信息。通过执行此操作,您将需要在每次修改订单时触发调用(对于示例执行javascript ajax调用)。此调用应向应用程序服务器发送请求,该服务器将调用适当的服务来更新该列表的持久层。

然后,您还需要调整您的持久层,以便使用您之前保留的“排名”信息对列表进行排序,以便显示您的页面。

我想这是最有效的方式。

祝你好运!