Обработка ui:repeat, которая возвращает пустое значение

У меня есть ui:repeat, который возвращает список объектов. Есть ли способ узнать, что возвращаемый список пуст?

<ui:repeat id="resulta" value="#{testController.testList}" var="list"> 
   <div>list.name</div>
</ui:repeat>

что-то вроде, если ui:repeat пуст, тогда отобразите div с надписью «Список пуст»

я слышал о varStatus -> Facelets повторяет индекс тегов

но я не думаю, что есть что-то для пустого списка. или есть?

ОБНОВЛЕНО

<ui:repeat id="resulta" value="#{testController.testList}" var="list"> 
   <div>list.name</div>
    <h:panelGroup rendered="#{empty list}">
        list is empty!
    </h:panelGroup>
</ui:repeat>

Я попытался отобразить "список пуст!" когда список пуст, но тогда он не отображается.


person galao    schedule 16.05.2013    source источник


Ответы (2)


<ui:repeat id="resulta" 
           value="#{testController.testList}" 
           var="list">
    <div>
        #{list.name}
    </div>

</ui:repeat>

<h:panelGroup rendered="#{empty testController.testList}">
    List is empty!
</h:panelGroup>

rendered — это условное выражение, которое отображается только в том случае, если оно истинно. Если вы хотите отобразить последний h:panelGroup как div вместо span, рассмотрите возможность добавления layout='block' к элементу.

person Menno    schedule 16.05.2013
comment
я понимаю, но что, если я хочу отобразить что-то, говорящее, что список пуст? я обновил свой код выше, но он не работает. Пожалуйста, посмотрите. Благодарность! - person galao; 16.05.2013
comment
Добавьте ‹h:panelGroup /› сразу после ‹/ui:repeat› и инвертируйте параметр рендеринга из ‹ui:repeat›! - person Alexandre Lavoie; 16.05.2013
comment
Как уже сказал Александр, просто добавьте панель (отредактируйте мой ответ для получения дополнительной информации). В приведенном вами примере панель никогда не отображается, потому что она никогда не зацикливается (поскольку список пуст). - person Menno; 16.05.2013

Вы можете отобразить сообщение о пустом списке за пределами элемента <ui:repeat> как:

<ui:repeat id="resulta" 
       value="#{testController.testList}" 
       var="list" 
       rendered="#{not empty testController.testList}">
    <div>
        #{list.name}
    </div>
</ui:repeat>
<h:panelGroup rendered="#{empty testController.testList}">
    list is empty!
</h:panelGroup>
person Tasos P.    schedule 16.05.2013