2016-05-24 5 views
1

Я использую калитку 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 (список))' –

+0

Вы правы МАРТИН-г, но это означает, что вы всегда устанавливаете его на видимый, если он не пуст, это может помешать сделать его невидимым в другом месте. – Martin

Смежные вопросы