2012-10-11 66 views
2

我有一個DataTable,我想以下行爲:dataTable中,rowSelect和禁用命令按鈕(JSF2.0 + Primefaces)

我選擇一行,addRFI按鈕被激活。

我按下addRFI按鈕,它執行addRFICustomer方法並出現ConfirmDialog。

我按下確認按鈕,表中沒有選擇任何行。

如果沒有選擇行,addRFI按鈕不會被激活。

我的代碼(MyCSR.xhtml):

<h:form id="assignForm"> 
     <p:dataTable var="csr" value="#{myCsrController.csrModel}" id="csrList" editable="true" 
      selectionMode="single" selection="#{myCsrController.csrSelected}" rowKey="#{csr.id}"> 

      <f:facet name="header"> 
       My Work Page 
      </f:facet> 

      <p:ajax event="rowSelect" listener="#{myCsrController.onRowSelected}" update="addRFI,addTR" /> 
      <p:ajax event="rowUnselect" listener="#{myCsrController.onRowUnselected}" update="addRFI,addTR" /> 

      <p:column headerText="CSR Number"> 
       <h:outputText value="#{csr.csrNumber}" /> 
      </p:column> 
       ... 
      <f:facet name="footer"> 
       <p:commandButton id="addRFI" value="Add/Remove RFI Customer" oncomplete="wdlg1.show()" actionListener="#{myCsrController.addRFICustomer}" update=":assignForm:confirmDialog" disabled="#{!myCsrController.isSelected}" /> 
      </f:facet> 
     </p:dataTable>  

     <p:confirmDialog id="confirmDialog" header="Add RFI Customer" widgetVar="wdlg1" message="Please confirm that an RFI Customer activity has been created for #{myCsrController.csrSelected.csrNumber}">  
      <p:commandButton id="confirmButton" value="Ok" oncomplete="wdlg1.hide()" update=":assignForm:csrList" /> 
     </p:confirmDialog> 
    </h:form> 

MyCsrController:

public void addRFICustomer(ActionEvent event){   
    ... 
     } 
    public void onRowSelected(SelectEvent event){ 
    setIsSelected(true); 
} 

    public void onRowUnselected(UnselectEvent event){ 
    setIsSelected(false); 
} 

我的問題是,不執行方法addRFICustomer,我想,當我按下按鈕addRFI先禁用按鈕和actionListener沒有執行......我想首先執行監聽器,我做錯了什麼? 謝謝

+0

您是否在控制檯中遇到任何異常?在數據表之後放置一個p:messages組件,並使用commandButton對其進行更新。 你有什麼消息嗎? –

回答

0

檢查是否導入java.awt.event.ActionEvent的ActionEvent。

我試過你的代碼,並找到與java.awt.event.ActionEvent導入ActionEvent可能是你的問題。我開始使用java.awt.event.ActionEvent,結果和你的一樣。

嘗試導入javax.faces.event.ActionEvent