简体   繁体   中英

How do I display a message if a jsf datatable is empty?

Using JSF1.2, if my datatable binding returns no rows I want to display a message saying so.

How do I do that?

And for extra points - how do I hide the table completly if it's empty?

Thanks.

Make use of the rendered attribute. It accepts a boolean expression. You can evaluate the datatable's value inside the expression with help of the EL's empty keyword. If it returns false , the whole component (and its children) won't be rendered.

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

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

For the case you're interested, here are other basic examples how to make use of the EL powers inside the rendered attribute:

<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'}" />

See also:

You can test this in several ways, for example by having a function in a bean that tests the list size:

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

then in the JSF pages :

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

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM