Listendarstellungen mit ListView
ListView I
-
Ein
ListViewrepliziert seine Inhalte anhand einer Liste von Modell-Objekten. Die Komponenten werden dabei inpopulateItemangelegt und dem übergebenemitemhinzugefügt:List<String> someList = Arrays.asList("first item", "second item", "third item"); add(new ListView<String>("list", someList) { @Override protected void populateItem(ListItem<String> item) { String text = item.getModelObject(); // Achtung: item.add(...)! item.add(new Label("text", text)); } });
ListView II
-
Markup:
<ul> <li wicket:id="list"> <span wicket:id="text">Text</span> </li> </ul>
-
Ergebnis:
<ul> <li><span>first item</span></li> <li><span>second item</span></li> <li><span>third item</span></li> </ul>
wicket:container
-
Falls der zu wiederholende Teil im Markup aus mehreren Tags besteht (z.B. mehrere Tabellenzeilen pro Listenobjekt), kann
<wicket:container>verwendet werden:<table> <wicket:container wicket:id="list"> <tr> <td>Name:</td> </tr> <tr> <td><span wicket:id="name">some name</span></td> </tr> </wicket:container> </table>
wicket:remove
-
Mittels
<wicket:remove>kann im Markup HTML zu Testzwecken (Vorschau der statischen HTML-Seite im Browser) eingefügt werden. -
Inhalte innerhalb eines
<wicket:remove>-Blocks werden von Wicket entfernt, z.B.:<ul> <li wicket:id="list"> <span wicket:id="text">first</span> </li> <wicket:remove> <li>second item</li> <li>third item</li> </wicket:remove> </ul>
Mehrseitige Listen
-
Mit
PageableListViewundPagingNavigatorkönnen mehrseitige Listen erzeugt werden:PageableListView<Car> carList = new PageableListView<Car>("carList", carList, 5) { @Override protected void populateItem(ListItem<Car> item) { // populate items here } }; add(carList); add(new PagingNavigator("carNavigator", carList));
-
PagingNavigatorerzeugt eine seitenweise Navigation:
RepeatingView
-
RepeatingViewist eine einfachere Listenkomponente, die das Markup für jede Unterkomponente wiederholt:RepeatingView view = new RepeatingView("repeater"); view.add(new Label("1", "first item")); view.add(new Label("2", "second item")); view.add(new Label("3", "third item"));
-
Markup:
<ul><li wicket:id="repeater"></li></ul>
-
Ergebnis:
<ul><li>first item</li><li>second item</li><li>third item</li></ul>
Anzeige von Datenbanktabellen
- Ein
ListViewbenötigt immer eine vollständig geladene Liste aller Objekte. - Mit
DataViewundIDataProviderkönnen Datenbankinhalte insb. bei seitenweiser Darstellung per SQLLIMITbei Bedarf nachgeladen werden.

