开发者

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:

  • Java EE 7 tutorial - Expression Language - Operators


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

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜