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
Post a Comment