Установите видимость компонента с помощью setVisible()
в соответствии с тем, является ли элемент последним в списке, с использованием ListItem.getIndex()
и размером ListView.getList()
. Если компонент называется setVisible(false)
, он вообще не будет включен в визуализированный вывод.
Кроме того, я бы рекомендовал не использовать Label
для разделителя. Добавьте его как WebMarkupContainer
и определите его содержимое в разметке (вот где он принадлежит).
Используйте wicket:container
в HTML или используйте <div>
и установите renderBodyOnly(true)
так, чтобы выводилось только содержимое WebMarkupContainer
.
Например:
ItemAdapter itemList= (ItemAdapter)item.getModelObject();
item.add(new Label("itemName", itemList.getItemName()));
item.add(new Label("qty",itemList.getQuantity().toString()));
WebMarkupContainer separator = new WebMarkupContainer("separator");
boolean isLast = item.getIndex() +1 == getList().size();
separator.setVisible(!isLast);
item.add(separator);
С HTML:
<div wicket:id="list">
...
<wicket:container wicket:id="separator">
<br/>
<div class='itemList'></div>
</wicket:container>
</div>
В качестве дополнительного примечания: если вы все еще хотите использовать Label
для разделителя, вы должны использовать separator.setEscapeModelStrings(false);
, чтобы сказать Wicket, что не следует избегать разметки, определенной в его модели. .
Если ListView
был разбит на страницы, например, с PageableListView
, вы должны использовать ListView.getViewSize()
`, чтобы определить реальное количество отображаемых элементов в представлении.