wicketで ListViewを使ってリストやテーブルを作成する

ListViewを使うことで、複数の要素を簡単に出力させることが出来ます。

html

<table>
  <tbody>
    <tr>
     <td>ユーザー名</td>
     </tr>
    <tr wicket:id="list">
      <td><span  wicket:id="name"></span></td>
    </tr>
  </tbody>
</table>

java

ArrayList<String> list =
      new ArrayList<String>();
 list.add("ユーザー1");
 list.add("ユーザー2");
 list.add("ユーザー3");
    ListView<String> listView =
      new ListView<String>("list", list) {
        @Override
        protected void populateItem(ListItem<String> item) {
          String name = item.getModelObject();
          item.add(new Label("name", name));
        }
      };

上のコードではList を表示していますが、mapや自作したclass、例えば名前と年齢を取得できるUserを用いて、List を作成後それを用いてListView を作れば、複数行のテーブルも簡単に作成可能です。

populateItemではラベルにアイテムを入れています。複数行のテーブルを作る際には 例えばUserを使って

protected void populateItem(ListItem<User> item) {
          User user = item.getModelObject();
          item.add(new Label("name", user.getName()));
          item.add(new Label("age", user.getAge()));
        }

nameとageのidのラベルに値を入れて、年齢と名前のテーブルを作成します