2011-05-23 57 views
4

我有一個ajax調用刷新下表。如果所有值都爲空,我可以隱藏「Score」列(它是BigDecimal)嗎?否則應該顯示?如何使用ajax顯示/隱藏JSF數據表列?

<h:dataTable id="theTable" value="#{MyBean.people}" var="person"> 
    <h:column> 
    <f:facet name="header"> 
     <h:outputText value="Name" /> 
    </f:facet> 
    #{person.name} 
    </h:column> 
    <h:column rendered="#{person.score != null}"> 
    <f:facet name="header"> 
     <h:outputText value="The Score" /> 
    </f:facet> 
    #{person.score} 
    </h:column> 
</h:dataTable> 

即使分數不爲空,呈現的當前總是使列不呈現。

回答

5

有沒有「簡單」的方法來做到這一點,你必須自己看看完整的集合。你可以寫一個檢查列表爲空值的輔助方法:

public boolean isAllScoresNull() { 
    for(Person p : people) { 
     if(p.getScore != null) return false; 
    } 
    return true; 
} 

,並在頁面中使用通過EL:

... 
<h:column rendered="#{myBeanController.allScoresNull}"> 
... 

你也可以定義該任務的TagFunction。

+0

關於第二個想法,您可能想使用類似org.apache.commons.collections.CollectionUtils.isEmpty(people)的東西來檢查上面示例中的List ... – 2011-05-23 14:31:53

+0

謝謝,我想知道是否創建一個單獨的方法在Bean上是一個可能的解決方案。 – Ryan 2011-05-23 14:34:16

+0

試過了,它工作。謝謝 – Ryan 2011-05-23 14:52:56