jpa - RichFaces 4 dataTable edit issue -


i such table editing here -> http://showcase.richfaces.org/richfaces/component-sample.jsf?demo=datatable&sample=datatableedit&skin=bluesky . problem ist that, when changes in editpane (popuppanel) not remembered in private osobatelefon edytujosobe. make update impossible via jpa. have getters , setters , class osobatelefon implements serializable.

@managedbean(name = "administrator") @viewscoped @sessionscoped public class administrator implements serializable @ejb private uzytkownikfacade uzytkownikfacade;  private static final long serialversionuid = 1l; @ejb private osobafacade osobafacade;  private osoba osobaadmina; private int numerstrony = 1; private uzytkownik uzytkownik; private list<osoba> listaosob; private static final int client_rows_in_ajax_mode = 10; private int clientrows; private int wybranaosoba; private osobatelefon edytujosobe; //it doesn't remember changes made in editpane private list<osobatelefon> osobyitelefony;   /**  * creates new instance of administrator  */ public administrator() {  }   public void aktualizacjawybranejosoby() {      this.osobyitelefony.set(this.wybranaosoba, this.edytujosobe);      osoba nowaosoba = new osoba();     list<telefon> nowalistatelefonow = new arraylist<telefon>();      osobatelefon osobatelefon = this.osobyitelefony.get(this.wybranaosoba);     int o = this.osobyitelefony.get(this.wybranaosoba).getidosoby();     int of = this.osobyitelefony.get(this.wybranaosoba).getidtelefonu();      system.out.println("wybrana osoba id " + o);     system.out.println("wybrane id fona " + of);      boolean znalezionoosobe = false;     iterator<osoba> iteos = this.listaosob.iterator();     while (!znalezionoosobe && iteos.hasnext()) {         osoba os = iteos.next();         if (os.getidosoba() == o) {             znalezionoosobe = true;              nowaosoba.setidosoba(os.getidosoba());             nowaosoba.setimie(osobatelefon.getimie());             nowaosoba.setnazwisko(osobatelefon.getnazwisko());             nowaosoba.setkodpocztowy(osobatelefon.getkodpocztowy());             nowaosoba.setmiejscowosc(osobatelefon.getmiejscowosc());             nowaosoba.setulica(osobatelefon.getulica());             nowaosoba.setuzytkowniklist(os.getuzytkowniklist());              telefon nowytelefon = new telefon();             (telefon tel : os.gettelefonlist()) {                  if (tel.getidtelefon() == of) {                     nowytelefon.setfkidosoba(nowaosoba);                     nowytelefon.setidtelefon(of);                     nowytelefon.setnumer(this.edytujosobe.getnumer());                     system.out.println("nr tel. "+tel.getnumer());                     nowytelefon.setopis(this.edytujosobe.getopis());                     nowytelefon.setzastrzezony(this.edytujosobe.getzastrzezony());                     nowalistatelefonow.add(nowytelefon);                 } else {                     nowalistatelefonow.add(tel);                 }             }              nowaosoba.settelefonlist(nowalistatelefonow);             this.osobafacade.aktualizujosoba(nowaosoba);             this.pobierzosobydotabeli();          }      }   }  public list<osoba> pobierzosobydotabeli() {     //getting people phone list<osobatelefon> works }  public void switchajaxloading(valuechangeevent event) {     this.clientrows = (boolean) event.getnewvalue() ? client_rows_in_ajax_mode : 0; }  public void zapelnijlistetelefonow() {     //getting people phone number list<phone> works }  public void usunosobe() { //deleting people works }  } 

the xhtml

<a4j:status onstart="#{rich:component('statpane')}.show()" onstop="#{rich:component('statpane')}.hide()" />     <h:form id="formprojekty">         <rich:datatable value="#{administrator.osobyitelefony}"                          var="pr"                         iterationstatusvar="ite"                          id="table"                          rows="8" >              <rich:column width="auto">                 <f:facet name="header">imię</f:facet>                 <h:outputtext value="#{pr.imie}" />             </rich:column>               <rich:column>                 <a4j:commandlink styleclass="no-decor"                                   render="editgrid"                                  execute="@this"                                   oncomplete="#{rich:component('editpane')}.show()">                     <h:graphicimage library="img" name="edit.gif" alt="edycja"/>                     <a4j:param value="#{ite.index}"                                assignto="#{administrator.wybranaosoba}" />                     <f:setpropertyactionlistener target="#{administrator.edytujosobe}"                                                  value="#{pr}" />                 </a4j:commandlink>                 <a4j:commandlink styleclass="no-decor"                                   execute="@this"                                  render="@none"                                   oncomplete="#{rich:component('confirmpane')}.show()">                     <h:graphicimage library="img" name="delete.gif" alt="usuń"/>                     <a4j:param value="#{ite.index}"                                assignto="#{administrator.wybranaosoba}" />                     <f:setpropertyactionlistener target="#{administrator.edytujosobe}"                                                  value="#{pr}" />                 </a4j:commandlink>             </rich:column>              <f:facet name="footer">                 <rich:datascroller page="#{administrator.numerstrony}" />             </f:facet>         </rich:datatable>          <a4j:jsfunction name="remove"                          action="#{administrator.usunosobe()}"                         render="table"                          execute="@this"                         oncomplete="#{rich:component('confirmpane')}.hide();" />          <a4j:jsfunction name="edycja"                          action="#{administrator.aktualizacjawybranejosoby()}"                         render="table"                          execute="@this"                         oncomplete="#{rich:component('editpane')}.hide();" />           <rich:popuppanel id="statpane" autosized="true">             <h:graphicimage library="img" name="ai.gif" alt="czekaj"/>             proszę czekać...         </rich:popuppanel>          <rich:popuppanel id="confirmpane" autosized="true">             czy na pewno usunać?             <a4j:commandbutton value="tak" onclick="remove();                     return false;" />             <a4j:commandbutton value="nie"                                onclick="#{rich:component('confirmpane')}.hide();                     return false;" />         </rich:popuppanel>          <rich:popuppanel header="edycja osoby"                           id="editpane"                           domelementattachment="parent" width="180" height="420">                      <h:panelgrid columns="1" id="editgrid">                         <h:panelgroup >                             <h:outputtext value="imię" /><br />                             <h:inputtext value="#{administrator.edytujosobe.imie}" >                                 <f:validatelength maximum="32" minimum="3"/>                             </h:inputtext>                         </h:panelgroup>                      </h:panelgrid><br/>                     <a4j:commandbutton value="aktualizuj"                                         onclick="edycja(); return false;"/>                     <a4j:commandbutton value="anuluj"                                        onclick="#{rich:component('editpane')}.hide();                     return false;" />          </rich:popuppanel>     </h:form> 

if can change make aktualizuj a4j-link little bit easier. try that:

  <a4j:commandbutton value="aktualizuj"                     onclick="#{rich:component('editpane')}.hide();"                     action="#{administrator.aktualizacjawybranejosoby()}"  render="table"/> 

and put a4j:region inputtext , link send required values:

    <rich:popuppanel header="edycja osoby"                       id="editpane"                       domelementattachment="parent" width="180" height="420">             <a4j:region>                 <h:panelgrid columns="1" id="editgrid">                     <h:panelgroup >                         <h:outputtext value="imię" /><br />                         <h:inputtext value="#{administrator.edytujosobe.imie}" >                             <f:validatelength maximum="32" minimum="3"/>                         </h:inputtext>                     </h:panelgroup>                  </h:panelgrid><br/>                <a4j:commandbuttonvalue="aktualizuj" onclick="#    {rich:component('editpane')}.hide();"action="#{administrator.aktualizacjawybranejosoby()}" render="table"/>                 <a4j:commandbutton value="anuluj"                                    onclick="#{rich:component('editpane')}.hide();                 return false;" />               </a4j:region>     </rich:popuppanel> 

i add render="table" aktualizuj a4j:link update value in datatable


Comments

Popular posts from this blog

node.js - Bad Request - node js ajax post -

Why does Ruby on Rails generate add a blank line to the end of a file? -

keyboard - Smiles and long press feature in Android -