0

私は次のクラスを持っています:

public class Group {
    private long id;
    private String name;
    ...
    private List<Person> members;
}

public class Person {
    private long id;
    private String name;
    private String comments;
}

私は次の改札パネルを持っています:

<wicket:panel>
   <div>
     <!-- Group data -->
   </div>
   <form wicket:id="group">
   <table>
      <tbody wicket:id="container">
         <tr wicket:id="members">
             <td wicket:id="personId"></td>
             <td wicket:id="name"></td>
             <td><input type="text" name="comments" wicket:id="comments" value="" /></td>
         </tr>
      </tbody>
   </table>
   <input type="submit" value="save" >
   </form>      
</wicket:panel>

一方、フィルタリング機能を備えたWebページがあり、さまざまなグループが表示されます。

<html>
<body>
   <form wicket:id="filterOptions">
     <!-- filter options -->
   </form>
   <div wicket:id="resultingGroups">
       <!-- contains the groups that matching the filters -->
   </div>
</body>
</html>

ajax送信を行うグループを更新したいと思います。ListViewを使用してみましたが、[保存]ボタンをクリックすると、変更が最初のグループパネルに反映され、他のグループを更新して[保存]をクリックすると、グループオブジェクトが更新されない理由がわかりません。

よく調べてみると、ListViewは自分のやりたいことには適していないことがわかりましたが、どのビューが正しいかわかりません。

フィルタフォームはajaxボタンでも機能し、正常に機能します。

私はWicketを初めて使用します。

前もって感謝します!!

4

2 に答える 2

1

実際、ListView、DataView、およびその他のリピーターは、やりたいことに適しています。

  • ListView は、必要なアイテムのコレクションを含むモデルによって設定される必要があります
    ListModel peopleModel = //... DAO アクセス (データベース)
    ListView peopleList = new ListView("resultingGroups", peopleModel){ ... };
  • peopleList再描画 (ListView を更新) するには、コンテナーを で囲む必要があります.setOutputMarkupId(true);(Wicket が ajax を介してそのコンテナーを見つけられるようにするため)。
...
    WebMarkupContainer peopleContainer = new WebMarkupContainer("コンテナ");
    peopleContainer.setOutputMarkupId(true);
    peopleContainer.add(ピープルリスト);
...
  • ...そして、リストに表示された結果を更新するときはいつでも、新しい結果をモデルに設定し ( peopleModel) 、ListView を持つコンテナを再描画する必要があります( (*))
public void onEvent(AjaxRequestTarget ターゲット) {
    //... ボタンのクリックなどで
    newPeopleList = // ... DAO
    peopleModel.setObject(newPeopleList);

    target.add(ピープルコンテナ); // (*) 再描画
}

それが役に立ったことを願っています。その他の例はこちら

https://cwiki.apache.org/WICKET/how-to-repaint-a-listview-via-ajax.html

于 2012-08-16T13:23:15.140 に答える
0

https://github.com/vineetsemwal/quickview/wikiを確認してください

于 2012-08-21T15:12:09.820 に答える