2013-05-01 57 views
4

這裏是我的代碼無法正常工作:如何使PrimeFaces中的p:cellEditor有條件?

... 
<p:column sortBy="#{invoice.customerId}" id="customerId"> 
    <f:facet name="header"><h:outputText value="Customer ID"/></f:facet> 
    <f:facet name="output" rendered="#{!editUIBean.isEditable('customerId')}"> 
     <h:outputText value="#{invoice.customerId}"/> 
    </f:facet> 
    <p:cellEditor rendered="#{editUIBean.isEditable('customerId')}"> 
     <f:facet name="output"> 
      <h:outputText value="#{invoice.customerId}"/> 
     </f:facet> 
     <f:facet name="input"> 
      <h:inputText value="#{invoice.customerId}"/> 
     </f:facet> 
    </p:cellEditor> 
</p:column> 
... 

所以我試圖做的事:用戶首先選一個選項,該選項決定了哪些記錄可編輯,只顯示可編輯該記錄選項。對於任何給定的選項,只有那些記錄中的某些列是可編輯的。如果給定選項列可編輯,則isEditable(columnName)方法返回true,如果列不可編輯則返回false。我想要做的是,當用戶單擊編輯記錄時,可編輯字段顯示輸入字段,然後不可編輯字段顯示其值。使用上面的代碼,當列不可編輯時,在單擊編輯之前和之後,該值不會顯示。當字段可編輯時,將顯示該值,並且當您單擊編輯時,該值將被包含該值的輸入字段替換。所以我的例子工作,除了當該字段不可編輯時,該值完全隱藏。我希望在不編輯和編輯時顯示不可編輯的值,我只是不希望它們在編輯期間可編輯。

+0

** rendered =「#{editUIBean.isEditable('customerId')}」**,如何獲得'customerId'? – 2013-05-02 01:18:59

回答

7

<p:column> 
    <f:facet name="output" rendered="#{!editUIBean.isEditable('customerId')}"> 
     <h:outputText value="#{invoice.customerId}" /> 
    </f:facet> 
    ... 
</p:column> 

是不對的。 <p:column>不支持<f:facet name="output">。只需將rendered條件放在<h:outputText>本身上即可。

<p:column> 
    <h:outputText value="#{invoice.customerId}" rendered="#{!editUIBean.isEditable('customerId')}" /> 
    ... 
</p:column>