Как отобразить сообщение, если jsf datatable пуст?

Используя JSF1.2, если мое привязанное к данным привязка не возвращает строк, я хочу показать сообщение об этом.

Как это сделать?

И для дополнительных точек - как скрыть таблицу полностью, если она пуста?

Спасибо.

Ответы

Ответ 1

Использовать атрибут rendered. Он принимает логическое выражение. Вы можете оценить значение datatable внутри выражения с помощью ключевого слова EL empty. Если он возвращает false, весь компонент (и его дочерние элементы) не будет отображаться.

<h:outputText value="Table is empty!" rendered="#{empty bean.list}" />

<h:dataTable value="#{bean.list}" rendered="#{not empty bean.list}">
    ...
</h:dataTable>

В интересующем вас случае приведены следующие основные примеры того, как использовать свойства EL внутри атрибута rendered:

<h:someComponent rendered="#{bean.booleanValue}" />
<h:someComponent rendered="#{bean.intValue gt 10}" />
<h:someComponent rendered="#{bean.objectValue eq null}" />
<h:someComponent rendered="#{bean.stringValue ne 'someValue'}" />
<h:someComponent rendered="#{not empty bean.collectionValue}" />
<h:someComponent rendered="#{not bean.booleanValue and bean.intValue ne 0}" />
<h:someComponent rendered="#{bean.enumValue eq 'ONE' or bean.enumValue eq 'TWO'}" />

См. также:

Ответ 2

Вы можете протестировать это несколькими способами, например, имея функцию в bean, которая проверяет размер списка:

function boolean isEmpty() {
    return myList.isEmpty();
}

то на страницах JSF:

<h:outputText value="List is empty" rendered="#{myBean.empty}"/>

<h:datatable ... rendered="#{!myBean.empty}">
...
</h:datatable>