Ajax dataTable、rowSelect和disable commandButton(JSF2.0+Primefaces)

Ajax dataTable、rowSelect和disable commandButton(JSF2.0+Primefaces),ajax,events,jsf-2,datatable,primefaces,Ajax,Events,Jsf 2,Datatable,Primefaces,我有一个dataTable,需要以下行为: 我选择一行并激活addRFI按钮 我按下addRFI按钮,它执行addrficcustomer方法,并出现一个ConfirmDialog 我按下确认按钮,表中没有选择任何行 如果未选择行,则不会激活addRFI按钮 我的代码MyCSR.xhtml: <h:form id="assignForm"> <p:dataTable var="csr" value="#{myCsrController.csrModel}

我有一个dataTable,需要以下行为:

我选择一行并激活addRFI按钮

我按下addRFI按钮,它执行addrficcustomer方法,并出现一个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>
我的问题是没有执行addRFICustomer方法,我认为当我首先按下addRFI按钮时,禁用按钮,并且actionListener没有执行。。。我想先执行侦听器,我做错了什么?
谢谢

检查是否使用java.awt.event.ActionEvent导入ActionEvent

我尝试了您的代码,发现导入ActionEvent时使用java.awt.event.ActionEvent可能是您的问题

我在开始时使用了java.awt.event.ActionEvent,结果与您的相同


尝试导入javax.faces.event.ActionEvent。

检查是否使用java.awt.event.ActionEvent导入ActionEvent

我尝试了您的代码,发现导入ActionEvent时使用java.awt.event.ActionEvent可能是您的问题

我在开始时使用了java.awt.event.ActionEvent,结果与您的相同


尝试导入javax.faces.event.ActionEvent。

控制台中是否出现异常?将p:messages组件放在datatable之后,并使用commandButton更新它。您是否收到任何消息?控制台中是否出现任何异常?将p:messages组件放在datatable之后,并使用commandButton更新它。你收到留言了吗?
  public void addRFICustomer(ActionEvent event){        
    ...
        }
  public void onRowSelected(SelectEvent event){ 
    setIsSelected(true);
}

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