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

前端 未结 2 1165
野性不改
野性不改 2020-12-12 14:55

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 tabl

相关标签:
2条回答
  • 2020-12-12 15:09

    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:

    • Java EE 7 tutorial - Expression Language - Operators
    0 讨论(0)
  • 2020-12-12 15:19

    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>
    
    0 讨论(0)
提交回复
热议问题