我制作了一个Spring MVC应用程序,向用户显示项目列表 - 如何更改JSP中这些项目的顺序,以便将新订单提交给服务器?
例如,用户获得以下列表:
该表格由以下表格组成:
<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;鼠标)
答案 0 :(得分:1)
那是因为它们的主键(它是一个索引)自然是排序的,所以通常是行的id。
尝试在表格中添加“排名”字段,您将在数据排序后更新,并按排名对结果进行排序。
答案 1 :(得分:1)
您需要在持久层中保留订单信息。通过执行此操作,您将需要在每次修改订单时触发调用(对于示例执行javascript ajax调用)。此调用应向应用程序服务器发送请求,该服务器将调用适当的服务来更新该列表的持久层。
然后,您还需要调整您的持久层,以便使用您之前保留的“排名”信息对列表进行排序,以便显示您的页面。
我想这是最有效的方式。
祝你好运!