【发布时间】:2010-12-31 10:32:50
【问题描述】:
使用 JSF1.2,如果我的数据表绑定没有返回任何行,我想显示一条这样的消息。
我该怎么做?
另外,如果表格是空的,如何完全隐藏表格?
谢谢。
【问题讨论】:
使用 JSF1.2,如果我的数据表绑定没有返回任何行,我想显示一条这样的消息。
我该怎么做?
另外,如果表格是空的,如何完全隐藏表格?
谢谢。
【问题讨论】:
利用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'}" />
【讨论】:
empty 也适用于数组(和字符串)。如果它失败了你问一个问题。
emptyMessage。
您可以通过多种方式对此进行测试,例如在 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 关键字可以。