如果 jsf 数据表为空,如何显示消息?

2022-09-01 12:23:57

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

我该怎么做?

对于额外积分 - 如果桌子是空的,我该如何完全隐藏它?

谢谢。


答案 1

利用该属性。它接受布尔表达式。您可以借助 EL 的关键字在表达式中计算数据表的值。如果它返回,则不会呈现整个组件(及其子组件)。renderedemptyfalse

<h:outputText value="Table is empty!" rendered="#{empty bean.list}" />

<h:dataTable value="#{bean.list}" rendered="#{not empty bean.list}">
    ...
</h:dataTable>

对于您感兴趣的案例,以下是有关如何利用属性中的 EL 幂的其他基本示例:rendered

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

另请参阅:


答案 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>

推荐