Wicket RepeatingView:如果列表为空,则删除占位符

Wicket RepeatingView: delete placeholder if list is empty

我正在使用 wicket RepeatingView 来实现项目列表。 HTML如下:

<ul>
    <li wicket:id="listItemFoo">
        ...content...
    </li>
</ul>

在 java 后端我做的是:

RepeatingView listFoo = new RepeatingView("listItemFoo");
//put items inside listFoo
addOrReplace(listFoo);

这可以正常工作,但有一个问题。在我的应用程序中,有些情况下没有要添加到列表中的项目。在那种情况下,我希望中继器不输出任何内容。然而,情况并非如此:如果转发器为空,它仍将输出一个空的 <li></li>。 这很烦人,因为它在页面中显示了一个空的项目符号点。避免这种情况的正确方法是什么? (我知道这可能是微不足道的,但正如你可能会说的那样,我对 wicket 还很陌生)

您可以将 RepeatingView 添加到容器中,并在列表为空时将其隐藏。

WebMarkupContainer container = new WebMarkupContainer("listItemFooContainer");
RepeatingView listFoo = new RepeatingView("listItemFoo");
// add items here
container.add(listFoo);
if (yourlist.isEmpty()) {
    container.setVisible(false);
}

在html中你可以做:

<ul wicket:id="listItemFooContainer">
    <li wicket:id="listItemFoo">
    ...

或者这样做

<div wicket:id="listItemFooContainer">
<ul>
    <li wicket:id="listItemFoo">
    ... 

我是这样解决问题的:

<ul>
    <wicket:container wicket:id="listItemFoo">
        <li>
            ...content...
        </li>
    </wicket:container>                         
</ul>

这样,当列表为空时,甚至不会生成容器。