2

私は dataTable を持っていて、次の動作が必要です:

行を選択すると、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 が実行されないと思います...最初にリスナーを実行したいのですが、何が間違っていますか? ありがとう

4

1 に答える 1

0

で ActionEvent をインポートするかどうかを確認しますjava.awt.event.ActionEvent

私はあなたのコードを試してみましたが、 import ActionEvent がjava.awt.event.ActionEvent問題である可能性があります。

java.awt.event.ActionEventは最初に使用しましたが、結果はあなたのものと同じです。

import を試してくださいjavax.faces.event.ActionEvent

于 2013-12-10T08:11:08.217 に答える