jsf - node treetable primefaces disappearing -


i'm developing application primefaces in liferay, need use p:treetable compenent, happens nodes dissapearing when click on p:commandbutton. belive has relation ajax, if put code within managedbean in @postconstruct, works normal

this .xhtml

<h:body>         <h:form id="form">             <p:layout style="min-width:1050px;height:700px" styleclass="semborda">                 <p:layoutunit position="west" size="900" minsize="40" maxsize="310"                     styleclass="semborda">                      <p:panelgrid columns="2" style="width:300px">                         <f:facet name="header">                             <h:outputtext value="campos" />                         </f:facet>                          <h:outputtext value="cidade" />                         <p:selectcheckboxmenu value="#{relatoriobean.selectedcidades}"                             label="cidades" filter="true">                             <f:selectitems value="#{relatoriobean.cidades}" />                         </p:selectcheckboxmenu>                          <!--                            <h:outputtext value="ramal" /> -->                         <!--                            <p:selectbooleancheckbox value="" /> -->                          <!--                            <h:outputtext value="tipo de ramal" /> -->                         <!--                            <p:selectbooleancheckbox value="" /> -->                          <!--                            <h:outputtext value="suborgao" /> -->                         <!--                            <p:selectbooleancheckbox value="" /> -->                          <!--                            <h:outputtext value="situação" /> -->                         <!--                            <p:selectbooleancheckbox value="" /> -->                          <h:outputtext value="polo" />                         <p:selectbooleancheckbox value="#{relatoriobean.polo}" />                          <!--                            <h:outputtext value="categoria diurna" /> -->                         <!--                            <p:selectbooleancheckbox value="" /> -->                          <!--                            <h:outputtext value="categoria noturna" /> -->                         <!--                            <p:selectbooleancheckbox value="" /> -->                          <h:outputtext value="teste" />                         <p:inputtext value="#{relatoriobean.teste}" />                     </p:panelgrid>                       <p:panelgrid columns="1" style="margin-left:200px; margin-top:10px">                          <p:commandbutton actionlistener="#{relatoriobean.montarraiz}"                             value="consultar" update="tree" styleclass="semb"  />                       </p:panelgrid>                   </p:layoutunit>                  <p:layoutunit position="center" styleclass="">                      <p:treetable value="#{relatoriobean.raiz}" var="ramal" id="tree">                          <p:column headertext="name">                             <h:outputtext value="#{ramal}" />                         </p:column>                       </p:treetable>                  </p:layoutunit>             </p:layout>         </h:form>      </h:body> 

my managedbean

package br.jus.tjpe.infosistelecom.controle;  import br.jus.tjpe.infosistelecom.dao.orgaodao; import br.jus.tjpe.infosistelecom.dao.ramaldao; import br.jus.tjpe.infosistelecom.factory.orgaodaofactory; import br.jus.tjpe.infosistelecom.factory.ramaldaofactory; import br.jus.tjpe.infosistelecom.modelo.ramal;  import java.io.serializable; import java.util.arraylist;  import javax.annotation.postconstruct; import javax.faces.bean.managedbean; import javax.faces.bean.requestscoped; import javax.faces.bean.viewscoped; import javax.faces.event.actionevent;  import org.primefaces.event.nodecollapseevent; import org.primefaces.event.nodeexpandevent; import org.primefaces.model.defaulttreenode; import org.primefaces.model.treenode;  @managedbean @requestscoped public class relatoriobean implements serializable {      private arraylist<ramal> ramais;     private arraylist<string> cidades;     private string[] selectedcidades;     private treenode root = new defaulttreenode("root node", null);;      private boolean polo;     private string teste;      public string getteste() {         return teste;     }      public void setteste(string teste) {         this.teste = teste;     }      public boolean getpolo() {         return polo;     }      public void setpolo(boolean polo) {         this.polo = polo;     }      public string[] getselectedcidades() {         return selectedcidades;     }      public void setselectedcidades(string[] selectedcidades) {         this.selectedcidades = selectedcidades;     }      public arraylist<string> getcidades() {         return cidades;     }      public void setcidades(arraylist<string> cidades) {         this.cidades = cidades;     }      public treenode getraiz() {         return root;     }      public void setraiz(treenode raiz) {         this.root = raiz;     }      public arraylist<ramal> getramais() {         return ramais;     }      public void setramais(arraylist<ramal> ramais) {         this.ramais = ramais;     }      @postconstruct     public void init() {          cidades = new arraylist<string>();         orgaodao daoorgao = orgaodaofactory.createorgaodao();         cidades = daoorgao.listarcidades();  //      ramais = new arraylist<ramal>(); //      ramaldao daoramal = ramaldaofactory.createramaldao(); //      ramais = daoramal.listartudo();  //      defaulttreenode no = new defaulttreenode("hgshdgs", this.root); //      defaulttreenode no1 = new defaulttreenode("hgssdsdshdgs", this.root); //      defaulttreenode no2 = new defaulttreenode("hgshdnjhsdghjdagjhggs", no1); //      defaulttreenode no3 = new defaulttreenode("hgshdnjhsdghjdagjhggs", this.root); //      defaulttreenode no24= new defaulttreenode("hgshdnjhsdghjdagjhggs", no3);        }      public void montarraiz() {          //system.out.println("diuyfuidyfuidyfuidy");  //      root = new defaulttreenode("root node", null); //      ramais = new arraylist<ramal>(); //      ramaldao daoramal = ramaldaofactory.createramaldao(); //      ramais = daoramal.listartudo();   //      defaulttreenode no = new defaulttreenode(ramais.get(0), raiz);  //      defaulttreenode no1 = new defaulttreenode(ramais.get(1), raiz);  //       //      (ramal ramal : ramais) { //           //          new defaulttreenode(ramal, this.root); //           //      } //           defaulttreenode no = new defaulttreenode("hgshdgs", this.root);         defaulttreenode no1 = new defaulttreenode("hgssdsdshdgs", this.root);         defaulttreenode no2 = new defaulttreenode("hgshdnjhsdghjdagjhggs", no1);         defaulttreenode no3 = new defaulttreenode("hgshdnjhsdghjdagjhggs", this.root);         defaulttreenode no24= new defaulttreenode("hgshdnjhsdghjdagjhggs", no3);   //      system.out.println(selectedcidades[0]); //      system.out.println(selectedcidades[1]);       }  } 

i did try resolve it, without sucess.

try changing scope of managedbean @viewscoped(balusc discussing scopes) since bean defined @requestscoped, new instance created , destroyed each request. i'm guessing here, when commandbutton posts via ajax, jsf realizes must rebuild managedbean during "restore_view" phase, somehow doesn't call constructor because it's handling ajax request. still, you've found, jsf must call @postconstruct methods during "restore_view" phase regardless of if request ajax or not.

in other words, treetable disappears page because doesn't exist on server side @ time.


Comments

Popular posts from this blog

shopping cart - Page redirect not working PHP -

php - How to modify a menu to show sub-menus -

python - Installing PyDev in eclipse is failed -