从Wicket ListView中删除显示中最后一个元素的一部分

时间:2011-11-07 12:13:05

标签: wicket

我是Wicket的新手。我必须在所有列表项之间实现包含ListView的{​​{1}}。我能够做到这一点,但它也显示了最后一个元素之后的div。我不希望最后div出现。我怎么能摆脱它?这是我现有的代码:

div

1 个答案:

答案 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()`来确定视图中显示的实际项目数。