1

項目のリストをユーザーに表示する Spring MVC アプリを作成しました。新しい順序がサーバーに送信されるように、JSP でこれらの項目の順序を変更するにはどうすればよいですか?

たとえば、ユーザーは次のリストを取得します。

  1. 飼い猫
  2. 愛犬
  3. ペットの鳥

リストは次の形式で構成されています。

<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 を含めました。たとえば、犬の行を猫の行の上に移動します。

これをサーバーに伝えるにはどうすればよいですか? (フォーム フィールドから petList モデルを再構築するにはどうすればよいですか?) 現在、フォームを送信した後、サーバーでリストを読み取ることができますが、フォーム内の名前を変更しても、リスト アイテムは元の順序で表示されます (例: 猫) --> マウス)

4

2 に答える 2

1

永続化レイヤーで注文情報を永続化する必要があります。これを行うと、注文を変更するたびに呼び出し (たとえば、javascript ajax 呼び出し) をトリガーする必要があります。この呼び出しは、適切なサービスを呼び出してそのリストの永続化レイヤーを更新するアプリケーション サーバーに要求を送信する必要があります。

次に、ページを表示する瞬間になると、以前に永続化した「ランク」情報を使用してリストを順序付けするように、永続化レイヤーを調整する必要もあります。

これが最も効率的な方法だと思います。

幸運を !

于 2012-06-15T13:20:22.380 に答える
1

これは、主キー (インデックス) によって自然に並べ替えられるためです。通常は、行の ID です。

テーブルに「ランク」フィールドを追加してみてください。データが並べ替えられたら更新し、結果をランク順に並べ替えます。

于 2012-06-15T12:13:02.650 に答える