JSF页面的<c:if>标签

ser*_*nni 1 tags jsf jsp if-statement

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

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

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

Rom*_*las 6

是的,您可以在JSF页面中添加JSTL标记.但是,在您的情况下,您可以简单地执行以下操作:

<h:dataTable value="#{myBean.list}"... rendered="#{myBean.displayTable}">
    ...
</h:dataTable>
Run Code Online (Sandbox Code Playgroud)

使用以下方法myBean:

public boolean isDisplayTable() {
    return list != null && list.size() > 0;
}
Run Code Online (Sandbox Code Playgroud)

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

<!-- 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>
Run Code Online (Sandbox Code Playgroud)

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

  • 你的第二个例子也可以渲染="#{!empty myBean.list}",因为'empty'是一个标准的JSF EL运算符.我更喜欢使用第一种方法,因为如果你需要添加更多条件,它可以使EL更简单. (3认同)