2013-05-29 56 views
4

我在XHTMLPrimefaces的DataTable RowSelect事件

   <h:form id="clientTableForm" prependId="false"> 
        <p:dataTable id="clientTable" widgetVar="clientTableVar" 
         var="client" value="#{resendEmailController.lazyDataModel}" 
         paginator="true" rows="15" 
         paginatorTemplate="{RowsPerPageDropdown} {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {CurrentPageReport}" 
         rowsPerPageTemplate="5,10,15,20,25,50,75,100" 
         paginatorPosition="bottom" pageLinks="5" lazy="true" 
         sortBy="#{client.cclnCode}" sortOrder="ascending" 
         selection="#{resendEmailController.selectedClient}" 
         selectionMode="single" filterDelay="500" scrollable="true" 
         scrollHeight="380"> 

         <p:ajax event="rowSelect" 
          listener="#{resendEmailController.changeClient}" 
          update="_accountTableForm_accountTable" /> 



         <p:column id="cclnCodeColumn" headerText="Client Code" 
          style="width:25%;" sortBy="#{client.cclnCode}" 
          filterBy="#{client.cclnCode}" filterMaxLength="10"> 
          <h:outputText value="#{client.cclnCode}" 
           converter="#{trimStringConverter}" /> 
         </p:column> 

         <p:column id="cclnNamenColumn" headerText="Client Name" 
          style="width:75%" sortBy="#{client.cclnName}" 
          filterBy="#{client.cclnName}" filterMaxLength="50"> 
          <h:outputText value="#{client.cclnName}" 
           converter="#{trimStringConverter}" /> 
         </p:column> 
        </p:dataTable> 
       </h:form> 
      </p:layoutUnit> 

<script type="text/javascript"> 

     $(document).ready(function() 
     { 
      autoSelectClient(); 
     }); 


     function autoSelectClient() 
     { 
      if (clientTableVar.isEmpty() == false) 
      { 
       clientTableVar.selectRow(1, false); 
      } 
     } 

     </script> 

下面我有這個我支持bean中

public void changeClient(SelectEvent selectEvent) 
{ 
    ResendEmailClient client = (ResendEmailClient) selectEvent.getObject(); 

    selectedClient = client; 

    String cclnCode = client.getCclnCode(); 

    selectedAccounts = getService().listAccounts(cclnCode); 
} 

我只想問的爲什麼「selectedClient」變量當由「autoSelectClient();」執行時,支持bean爲NULL。但是,如果我點擊行「selectedClient」已經設置。

正如你可以在我的支持bean中看到的,我可以通過獲取SelectEvent中的對象來獲得我想要的值,但我只是想知道差異的原因是什麼。

如果可能的話,任何人也可以建議如何複製模擬第二個場景,以便在調用「changeClient()」之前已經設置了「selectedClient」。

使用 JSF 2.1 PrimeFaces 3.5 鑽嘴魚科2.1

回答

6

嘗試把你的數據表中的ID在你的Ajax評選活動的過程是這樣的:

<p:ajax event="rowSelect" listener="#{resendEmailController.changeClient}" update="_accountTableForm_accountTable" process="clientTable" /> 

,當你打電話給你的事件真實情況,因爲您的選擇沒有發送。