4

如果数据表内容为空,我想呈现一个页脚(具有特定内容)。

我发现这个如何有条件地渲染 <f:facet>?但这并不能真正解决我的问题,因为如果消息不为空,它只会呈现页脚。

 <f:facet name="footer">
      <h:outputText value="List is empty" rendered="#{empty list}" />
 </f:facet>

如果列表为空,这确实有效,但如果它不是空的,这会将一个空行呈现为页脚......

还有其他解决方法吗?谢谢您的帮助!我正在使用 MyFaces 2.0.13。

4

2 回答 2

1

据我所知,在 JSF 1.2 中没有简单的方法可以做到这一点。

但是您可以使用此解决方法:

使用以下命令创建一个 CSS 类display: none

.hidden { display: none; }

在您的 dataTable 中,footerClass按如下方式指定属性:

<h:dataTable footerClass="#{hideFooterCondition ? 'hidden' : ''}">

这样,您就可以轻松地将页脚隐藏起来。

此外,如果您想在页脚不存在的情况下减少发送到浏览器的数据,您可以在renderedfacet 的内容属性中使用相同的条件:

<f:facet name="footer">
    <rich:datascroller for="myDataTable" rendered="#{not hideFooterCondition}" />
</f:facet>    
于 2012-11-07T23:52:12.767 回答
-1

您可以使用 hpanel 而不是 facet 来控制它。我在我处理的一些 JSF 应用程序中大量使用了这种技术。根据我的阅读,在视图中使用条件在 JSF 中被认为是不好的做法。HTML:

<h:panelGroup rendered="#{isEmpty}">
  <h:outputText value="List is empty" />
</h:panelGroup>

支持豆:

boolean isEmpty = false;
if (list.isEmpty()) {
  isEmpty = true;
}
于 2012-09-06T15:08:27.920 回答