【问题标题】:How do I display a message if a jsf datatable is empty?如果 jsf 数据表为空,如何显示消息?
【发布时间】:2010-12-31 10:32:50
【问题描述】:

使用 JSF1.2,如果我的数据表绑定没有返回任何行,我想显示一条这样的消息。

我该怎么做?

另外,如果表格是空的,如何完全隐藏表格?

谢谢。

【问题讨论】:

    标签: java jsf


    【解决方案1】:

    利用rendered 属性。它接受一个布尔表达式。您可以在 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>
    

    对于您感兴趣的情况,以下是其他基本示例,如何利用 rendered 属性中的 EL 功能:

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

    另见:

    【讨论】:

    • #{not empty bean.list} 是否适用于数组 BalusC?如果不是,我们如何检查一个数组是否为空?
    • @Harry:是的,empty 也适用于数组(和字符串)。如果它失败了你问一个问题。
    • 在 PrimeFaces 中存在 emptyMessage
    • @Alexander:问题是关于 JSF 1.2。
    • 这是肯定的 :) 。我只是想在这里发表评论,因为有时人们浏览这些问题可能是一个提示。
    【解决方案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>
    

    【讨论】:

    • 如果你可以直接使用#{bean.list.empty} 来代替,那就有点不知所措了。此外,这不包括null 的列表。 EL empty 关键字可以。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-11-08
    • 2017-09-28
    • 2012-12-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多