如果 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 命令按钮

为 JSF 下载 Mojarra 库时,在 Eclipse 中显示错误“zip 文件为空”

如果 odbc_num_rows == 为空,则显示消息

SwiftUI中List数据源为空时如何在视图中心显示文本消息?

如何显示/隐藏 jsf 组件

JSF / PrimeFaces - 如何显示自定义验证器的消息,但不显示同一组件上的必需验证