使用JSF1.2,如果我的数据表绑定没有返回任何行,我想显示一条消息。
我该怎么做?
对于额外的积分 - 如果它是空的,我如何完整地隐藏表?
感谢。
答案 0 :(得分:93)
使用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'}" />
答案 1 :(得分: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>