2013-05-29 2 views
4

У меня есть следующие в моей XHTMLPrimefaces Datatable RowSelect Event

   <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> 

И у меня есть это в моей бэк-боба

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

    selectedClient = client; 

    String cclnCode = client.getCclnCode(); 

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

Я просто хотел бы спросить, почему «selectedClient» переменной в bean bean является NULL, когда выполняется «autoSelectClient();». Но если я щелкнул строки, «selectedClient» уже установлен.

Как вы можете видеть в моем бэкбоне, я могу получить значение, которое я хочу, получив объект внутри SelectEvent, но я просто хочу знать, в чем причина разницы.

Также, если возможно, также можно предложить, как реплицировать эмулировать второй сценарий, чтобы «selectedClient» уже был установлен до вызова «changeClient()».

Использование JSF 2.1 PrimeFaces 3.5 Mojarra 2.1

ответ

6

пытаются отправить DataTable идентификатор в процессе вашего мероприятия выбора АЯКС, как это:

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

Потому что, когда вы называете события реальной ситуации вашего выбора не отправлено.

Смежные вопросы