如果 jsf 数据表为空,如何显示消息?
Posted
技术标签:
【中文标题】如果 jsf 数据表为空,如何显示消息?【英文标题】:How do I display a message if a jsf datatable is empty? 【发布时间】:2010-12-31 10:32:50 【问题描述】:使用 JSF1.2,如果我的数据表绑定没有返回任何行,我想显示一条这样的消息。
我该怎么做?
另外,如果表格是空的,如何完全隐藏表格?
谢谢。
【问题讨论】:
【参考方案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'" />
另见:
Java EE 7 tutorial - Expression Language - Operators【讨论】:
#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
关键字可以。以上是关于如果 jsf 数据表为空,如何显示消息?的主要内容,如果未能解决你的问题,请参考以下文章
为 JSF 下载 Mojarra 库时,在 Eclipse 中显示错误“zip 文件为空”