2009-11-30 32 views
1

用於開發Portlets和JPS的,所以有兩難困境。<c:if> JSF的標籤頁

任務:顯示<h:dataTable>只有當列表不爲空

是否有可能提供JSF頁面<c:if>標籤?

回答

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關鍵字(見指導here約EL表達式),導致rendered="#{!empty myBean.list}"

+3

您的第二個示例也可以呈現=「#{!empty myBean.list}」,因爲'empty'是標準的JSF EL操作符。我更喜歡使用第一種方法,因爲如果您必須添加更多條件,EL會更簡單。 – 2009-11-30 13:50:26

+0

後端方法加上「呈現」attr爲我工作好,謝謝 – sergionni 2009-11-30 13:58:41

1

<c:if>(和其他JSTL標籤)在大多數情況下可用於JSF。但是,不能在集合中迭代的組件內使用 - 例如<h:dataTable>。但在你的情況下,你想在外面<c:if>,所以這是可能的。但是,正如romaintaz指出的那樣,最好使用rendered屬性。