JSF页面的<c:if>标签</c:if>

时间:2009-11-30 13:36:23

标签: jsp jsf tags if-statement

用于开发Portlets和JPS,因此陷入两难境地。

任务:仅当列表不为空时显示<h:dataTable>

是否可以为JSF页面提供<c:if>标记?

2 个答案:

答案 0 :(得分:6)

是的,您可以在JSF页面中添加JSTL标记。但是,在您的情况下,您只需执行以下操作:

<h:dataTable value="#{myBean.list}"... rendered="#{myBean.displayTable}">
    ...
</h:dataTable>

myBean中使用以下方法:

public boolean isDisplayTable() {
    return list != null && list.size() > 0;
}

您也可以尝试(不确定它是否可行):

<!-- Idea from Colin Gislason -->
<h:dataTable value="#{myBean.list}"... rendered="#{not empty myBean.list}">
    ...
</h:dataTable>

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

请注意,您可以在EL表达式中使用!而不是not关键字(请参阅有关EL表达式的指南here),这会产生rendered="#{!empty myBean.list}"

答案 1 :(得分:1)

在大多数情况下,

<c:if>(和其他JSTL标记)可以在JSF中使用。但是,不能在迭代集合的组件内使用 - 如<h:dataTable>。但在你的情况下,你想要外面的<c:if>,所以它是可能的。但是,正如romaintaz指出的那样,最好使用rendered属性。