2016-05-24 57 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

相關問題