2016-05-24 58 views
1

我正在使用wicket RepeatingView来实现项目列表。该HTML如下:Wicket RepeatingView:如果列表为空,则删除占位符

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

而且在Java后台我做的:

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

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

回答

3

我解决了这样的问题:

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

这样,当清单是空的,容器甚至不会生成编辑。

1

您可以将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"> 
    ... 
+1

Upvoted,虽然我发现了一个更快的方式,我最终使用(请参阅我自己的答案) –

+0

你也可以做'view.setVisible(CollectionUtils.isNotEmpty(list))' –

+0

你是对的martin-g,但这意味着如果列表不是空的,则始终将其设置为可见,这可能会干扰其在其他地方的隐藏。 – Martin

相关问题