我是Wicket的新手.我必须实现一个ListView包含div所有列表项之间的内容.我能够做到,但它也显示了div最后一个元素.我不希望最后div出现.我怎么能摆脱它?这是我现有的代码:
add(new ListView<ItemAdapter>("items", order.getItems()) {
@Override protected void populateItem(ListItem<ItemAdapter> item)
ItemAdapter itemList= (ItemAdapter)item.getModelObject();
item.add(new Label("itemName", itemList.getItemName()));
item.add(new Label("qty",itemList.getQuantity().toString()));
item.add(new Label("div","<br/><div class='itemList'></div>"))
}
});
Run Code Online (Sandbox Code Playgroud)
setVisible()根据项目是否是列表中的最后一项,使用ListItem.getIndex()和大小来设置组件的可见性ListView.getList().如果调用该组件setVisible(false),则它将不会包含在渲染输出中.
另外,我建议不要使用a Label作为分隔符.将其添加为a 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);
Run Code Online (Sandbox Code Playgroud)
使用HTML:
<div wicket:id="list">
...
<wicket:container wicket:id="separator">
<br/>
<div class='itemList'></div>
</wicket:container>
</div>
Run Code Online (Sandbox Code Playgroud)
作为旁注,如果你仍想使用a Label作为分隔符,你应该使用separator.setEscapeModelStrings(false);它来告诉Wicket不要逃避其Model中定义的标记.
ListView例如,如果使用a 进行分页,PageableListView则应使用ListView.getViewSize()`来确定视图中显示的实际项目数.