我是Wicket的新手。我必须在所有列表项之间实现包含ListView
的{{1}}。我能够做到这一点,但它也显示了最后一个元素之后的div
。我不希望最后div
出现。我怎么能摆脱它?这是我现有的代码:
div
答案 0 :(得分:5)
根据项目是否是列表中的最后一项,使用setVisible()
和ListItem.getIndex()
的大小,使用ListView.getList()
设置组件的可见性。如果组件被称为setVisible(false)
,则它将不会包含在渲染输出中。
另外,我建议不要使用Label
作为分隔符。将其添加为WebMarkupContainer
,并在标记中定义其内容(即它所属的位置)。
在HTML中使用wicket:container
,或使用<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不要转义其模型中定义的标记。< / p>
如果ListView
被分页,例如,使用PageableListView
,则应使用ListView.getViewSize()
`来确定视图中显示的实际项目数。