java - How to update jsf datatable from back bean -


i have form user should enter values info web service. firstly user fulfills form , clicks request button webservice called. until here works nicely. webservice returns info, have re-render datatable new data. here page:

<h:body>     <h:form id="formcus">         <h:outputlabel value="müşteri tipi: *"/>         <p:selectonemenu id="customertype" value="#{customerservice.musteritipi}" style="width: 39%">             <f:selectitem itemlabel="" itemvalue=" " />             <f:selectitem itemlabel="bireysel" itemvalue="bireysel" />             <f:selectitem itemlabel="tüzel" itemvalue="tuzel" />             <f:selectitem itemlabel="yabancı" itemvalue="yabanci" />             <p:ajax event="change" update="#{customerservice.musteritipi}"/>         </p:selectonemenu>          <h:outputlabel value="ad/firma adı: *" for="customername" />         <p:inputtext id="customername" value="#{customerservice.adfirmaadi}" title="müşteri adı." >             <p:ajax event="change" update="#{customerservice.adfirmaadi}" />         </p:inputtext>          <h:outputlabel value="soyad/Ünvan: *" for="customersurname" />         <p:inputtext id="customersurname" value="#{customerservice.soyadunvan}" title="müşteriye ait soyad/ünvan." >             <p:ajax event="change" update="#{customerservice.soyadunvan}" />         </p:inputtext>          <h:outputlabel value="tc kimlik no: *"  />         <p:inputtext id="customertc" value="#{customerservice.tckimlikno}" title="tc kimlik numarasını buraya girin.tc numarası sadece sayılardan oluşmalıdır." >             <p:ajax event="change" update="#{customerservice.tckimlikno}" partialsubmit="true" process="@this"/>         </p:inputtext>          <h:outputlabel value="vergi no:"  />         <p:inputtext id="customervergi" value="#{customerservice.vergino}" title="tc kimlik numarasını buraya girin.tc numarası sadece sayılardan oluşmalıdır." >             <p:ajax event="change" update="#{customerservice.vergino}" partialsubmit="true"/>         </p:inputtext>          <h:outputlabel value="müdürlük kodu: *" />         <p:inputtext id="departmantid" value="#{customerservice.mudurlukkodu}" title="müdürlük kodunu buraya girin.müdürlük kodu sadece sayılardan oluşmalıdır." >             <p:ajax event="change" update="#{customerservice.mudurlukkodu}" partialsubmit="true"/>         </p:inputtext>          <h:outputlabel value="müşteri kodu: " />         <p:inputtext id="customerid" value="#{customerservice.musterikodu}" title="müdürlük kodunu buraya girin.müdürlük kodu sadece sayılardan oluşmalıdır." >             <p:ajax event="change" update="#{customerservice.musterikodu}" />         </p:inputtext>          <h:outputlabel value="e-posta adresi: " />         <p:inputtext id="customermail" value="#{customerservice.mail}" title="müşteriye ait e-mail adresini buraya girin." >             <p:ajax event="change" update="#{customerservice.mail}" partialsubmit="true"/>         </p:inputtext>          <h:outputtext value=" "/>         <p:commandbutton id="query" value="müşteri sorgula" actionlistener="#{customerservice.request}" async="true"  onsuccess="panelwv.show()">             <f:ajax execute="@form" render=":personlist" ></f:ajax>          </p:commandbutton>     </h:form>      <h:panelgrid columns="5">         <h:outputtext value=""/>         <h:outputtext value=""/>         <p:panel widgetvar="panelwv" visible="false" closable="true" header="sorgu yapılıyor...">             <p:graphicimage value="/resources/images/ajaxloadingbar.gif" />           </p:panel>         <h:outputtext value=""/>         <h:outputtext value=""/>     </h:panelgrid>     <h:outputtext value="bulunan müşterilere ait bilgiler:" />       <h:form id="personlist" rendered="#{not empty customerservice.musterikodu}">         <p:datatable value="#{customerservice.customer}" var="item" id="persontable" emptymessage="henüz müşteri eklemediniz.">             <p:column headertext="müşteri/firma id">                 #{item.customerid}             </p:column>             <p:column headertext="ad/firma adı">                 #{item.customername}             </p:column>             <p:column headertext="soyad/Ünvan" >                 #{item.customersurname}             </p:column>             <p:column headertext="müşteri tipi" >                 #{item.customertype}              </p:column>              <p:column headertext="telefon" >                 #{item.customertel}             </p:column>             <p:column headertext="adres">                 #{item.customeraddress}             </p:column>             <p:column headertext="e-posta">                 #{item.customermail}             </p:column>         </p:datatable>      </h:form> </h:body> 

and here bean:

//some getter , setters list<customers> customer = new arraylist<customers>();  public list<customers> getcustomer() {     return customer; }  public void setcustomer(list<customers> customer) {     this.customer = customer; }  public string request() {      final requestcontext context = requestcontext.getcurrentinstance();     //system.out.println("progress...");            //musterisorgula(musterisorgulakriter());     new thread(new runnable() {         public void run() {             try {                 musterikodu = string.valueof(musterisorgula(musterisorgulakriter()).getmusteribilgisi().getmusterikodu());                 list<telefonbilgisi> tel_result = telefonsorgula(telefonsorgulakriter(musterikodu)).getmusteritelefonlistesi();                 //telefon = tel_result.getmusteritelefonlistesi().get(0).gettelefonno();                  if (tel_result.size() > 0) {                     (telefonbilgisi t : tel_result) {                         telefon = t.gettelefonno();                     }                 } else {                     telefon = "no telephone.";                 }                 list<uavtadresbilgisi> uavt_result = uavtadressorgula(uavtadressorgulakriter(musterikodu)).getmusteriuavtadreslistesi();                  if (uavt_result.size() > 0) {                     (uavtadresbilgisi u : uavt_result) {                         adres = string.valueof(u.getsehir()) + ", " + string.valueof(u.getbucak()) + ", " + string.valueof(u.getkasaba());                     }                 } else {                     adres = "no address.";                 }                   customers cust = new customers(musteritipi, biginteger.valueof(long.valueof(musterikodu)), adfirmaadi, soyadunvan, telefon, adres, mail, projectid);                 if (!customer.contains(cust)) {                     customer.add(cust);                     system.out.println("customer has been added.");                  } else {                     system.out.println("customer still in list.");                 }             } catch (exception ex) {                 logger.getlogger(customerservice.class.getname()).log(level.severe, null, ex);                 context.execute("alert('try again.')");             }         }     }).start();      context.execute("panelwv.close()");     return ""; } 

the bean connect webservice , gether info, can see in logs. in beginning datatable empty. want show new data webservice responses. context.update("personlist") doesn't work when place below:

customer.add(cust);  

if me appriciated.

        <f:ajax execute="@form" render=":personlist" ></f:ajax>  

make change

        <f:ajax execute="@form" update="persontable" render=":personlist" ></f:ajax>  

Comments