jsf - Error with TreeNode (Primefaces) -


i'm developing system using jsf, hibernate, spring , primefaces. have 1 entity that, in each insert, data represented in treenode. when select 1 node tree, form must comes up, can edit selected item. yes, working well. there error, when click once in node, appears in console. if click twice, works. want know error shows when click once in node.

look:

jul 19, 2013 9:37:05 org.apache.catalina.core.standardwrappervalve invoke severe: servlet.service() servlet faces servlet threw exception java.lang.nullpointerexception     @ org.primefaces.component.tree.tree.processupdates(tree.java:308)     @ javax.faces.component.uicomponentbase.processupdates(uicomponentbase.java:1289)     @ javax.faces.component.uiviewroot.processupdates(uiviewroot.java:1254)     @ com.sun.faces.lifecycle.updatemodelvaluesphase.execute(updatemodelvaluesphase.java:78)     @ com.sun.faces.lifecycle.phase.dophase(phase.java:101)     @ com.sun.faces.lifecycle.lifecycleimpl.execute(lifecycleimpl.java:198)     @ javax.faces.webapp.facesservlet.service(facesservlet.java:646)     @ org.apache.catalina.core.applicationfilterchain.internaldofilter(applicationfilterchain.java:290)     @ org.apache.catalina.core.applicationfilterchain.dofilter(applicationfilterchain.java:206)     @ org.springframework.security.web.filterchainproxy$virtualfilterchain.dofilter(filterchainproxy.java:344)     @ org.springframework.security.web.access.intercept.filtersecurityinterceptor.invoke(filtersecurityinterceptor.java:110)     @ org.springframework.security.web.access.intercept.filtersecurityinterceptor.dofilter(filtersecurityinterceptor.java:84)     @ org.springframework.security.web.filterchainproxy$virtualfilterchain.dofilter(filterchainproxy.java:356)     @ org.springframework.security.web.access.exceptiontranslationfilter.dofilter(exceptiontranslationfilter.java:98)     @ org.springframework.security.web.filterchainproxy$virtualfilterchain.dofilter(filterchainproxy.java:356)     @ org.springframework.security.web.session.sessionmanagementfilter.dofilter(sessionmanagementfilter.java:95)     @ org.springframework.security.web.filterchainproxy$virtualfilterchain.dofilter(filterchainproxy.java:356)     @ org.springframework.security.web.authentication.anonymousauthenticationfilter.dofilter(anonymousauthenticationfilter.java:79)     @ org.springframework.security.web.filterchainproxy$virtualfilterchain.dofilter(filterchainproxy.java:356)     @ org.springframework.security.web.authentication.rememberme.remembermeauthenticationfilter.dofilter(remembermeauthenticationfilter.java:120)     @ org.springframework.security.web.filterchainproxy$virtualfilterchain.dofilter(filterchainproxy.java:356)     @ org.springframework.security.web.servletapi.securitycontextholderawarerequestfilter.dofilter(securitycontextholderawarerequestfilter.java:55)     @ org.springframework.security.web.filterchainproxy$virtualfilterchain.dofilter(filterchainproxy.java:356)     @ org.springframework.security.web.savedrequest.requestcacheawarefilter.dofilter(requestcacheawarefilter.java:36)     @ org.springframework.security.web.filterchainproxy$virtualfilterchain.dofilter(filterchainproxy.java:356)     @ org.springframework.security.web.authentication.abstractauthenticationprocessingfilter.dofilter(abstractauthenticationprocessingfilter.java:188)     @ org.springframework.security.web.filterchainproxy$virtualfilterchain.dofilter(filterchainproxy.java:356)     @ org.springframework.security.web.authentication.logout.logoutfilter.dofilter(logoutfilter.java:106)     @ org.springframework.security.web.filterchainproxy$virtualfilterchain.dofilter(filterchainproxy.java:356)     @ org.springframework.security.web.context.securitycontextpersistencefilter.dofilter(securitycontextpersistencefilter.java:80)     @ org.springframework.security.web.filterchainproxy$virtualfilterchain.dofilter(filterchainproxy.java:356)     @ org.springframework.security.web.filterchainproxy.dofilter(filterchainproxy.java:150)     @ org.springframework.web.filter.delegatingfilterproxy.invokedelegate(delegatingfilterproxy.java:237)     @ org.springframework.web.filter.delegatingfilterproxy.dofilter(delegatingfilterproxy.java:167)     @ org.apache.catalina.core.applicationfilterchain.internaldofilter(applicationfilterchain.java:235)     @ org.apache.catalina.core.applicationfilterchain.dofilter(applicationfilterchain.java:206)     @ financeiro.web.filter.conexaohibernatefilter.dofilter(conexaohibernatefilter.java:24)     @ org.apache.catalina.core.applicationfilterchain.internaldofilter(applicationfilterchain.java:235)     @ org.apache.catalina.core.applicationfilterchain.dofilter(applicationfilterchain.java:206)     @ org.apache.catalina.core.standardwrappervalve.invoke(standardwrappervalve.java:233)     @ org.apache.catalina.core.standardcontextvalve.invoke(standardcontextvalve.java:191)     @ org.apache.catalina.core.standardhostvalve.invoke(standardhostvalve.java:127)     @ org.apache.catalina.valves.errorreportvalve.invoke(errorreportvalve.java:103)     @ org.apache.catalina.core.standardenginevalve.invoke(standardenginevalve.java:109)     @ org.apache.catalina.connector.coyoteadapter.service(coyoteadapter.java:293)     @ org.apache.coyote.http11.http11processor.process(http11processor.java:861)     @ org.apache.coyote.http11.http11protocol$http11connectionhandler.process(http11protocol.java:606)     @ org.apache.tomcat.util.net.jioendpoint$worker.run(jioendpoint.java:489)     @ java.lang.thread.run(thread.java:724)  jul 19, 2013 9:39:06 org.apache.catalina.core.standardwrappervalve invoke severe: servlet.service() servlet faces servlet threw exception java.lang.nullpointerexception     @ org.primefaces.component.tree.tree.processupdates(tree.java:308)     @ javax.faces.component.uicomponentbase.processupdates(uicomponentbase.java:1289)     @ javax.faces.component.uiviewroot.processupdates(uiviewroot.java:1254)     @ com.sun.faces.lifecycle.updatemodelvaluesphase.execute(updatemodelvaluesphase.java:78)     @ com.sun.faces.lifecycle.phase.dophase(phase.java:101)     @ com.sun.faces.lifecycle.lifecycleimpl.execute(lifecycleimpl.java:198)     @ javax.faces.webapp.facesservlet.service(facesservlet.java:646)     @ org.apache.catalina.core.applicationfilterchain.internaldofilter(applicationfilterchain.java:290)     @ org.apache.catalina.core.applicationfilterchain.dofilter(applicationfilterchain.java:206)     @ org.springframework.security.web.filterchainproxy$virtualfilterchain.dofilter(filterchainproxy.java:344)     @ org.springframework.security.web.access.intercept.filtersecurityinterceptor.invoke(filtersecurityinterceptor.java:110)     @ org.springframework.security.web.access.intercept.filtersecurityinterceptor.dofilter(filtersecurityinterceptor.java:84)     @ org.springframework.security.web.filterchainproxy$virtualfilterchain.dofilter(filterchainproxy.java:356)     @ org.springframework.security.web.access.exceptiontranslationfilter.dofilter(exceptiontranslationfilter.java:98)     @ org.springframework.security.web.filterchainproxy$virtualfilterchain.dofilter(filterchainproxy.java:356)     @ org.springframework.security.web.session.sessionmanagementfilter.dofilter(sessionmanagementfilter.java:95)     @ org.springframework.security.web.filterchainproxy$virtualfilterchain.dofilter(filterchainproxy.java:356)     @ org.springframework.security.web.authentication.anonymousauthenticationfilter.dofilter(anonymousauthenticationfilter.java:79)     @ org.springframework.security.web.filterchainproxy$virtualfilterchain.dofilter(filterchainproxy.java:356)     @ org.springframework.security.web.authentication.rememberme.remembermeauthenticationfilter.dofilter(remembermeauthenticationfilter.java:120)     @ org.springframework.security.web.filterchainproxy$virtualfilterchain.dofilter(filterchainproxy.java:356)     @ org.springframework.security.web.servletapi.securitycontextholderawarerequestfilter.dofilter(securitycontextholderawarerequestfilter.java:55)     @ org.springframework.security.web.filterchainproxy$virtualfilterchain.dofilter(filterchainproxy.java:356)     @ org.springframework.security.web.savedrequest.requestcacheawarefilter.dofilter(requestcacheawarefilter.java:36)     @ org.springframework.security.web.filterchainproxy$virtualfilterchain.dofilter(filterchainproxy.java:356)     @ org.springframework.security.web.authentication.abstractauthenticationprocessingfilter.dofilter(abstractauthenticationprocessingfilter.java:188)     @ org.springframework.security.web.filterchainproxy$virtualfilterchain.dofilter(filterchainproxy.java:356)     @ org.springframework.security.web.authentication.logout.logoutfilter.dofilter(logoutfilter.java:106)     @ org.springframework.security.web.filterchainproxy$virtualfilterchain.dofilter(filterchainproxy.java:356)     @ org.springframework.security.web.context.securitycontextpersistencefilter.dofilter(securitycontextpersistencefilter.java:80)     @ org.springframework.security.web.filterchainproxy$virtualfilterchain.dofilter(filterchainproxy.java:356)     @ org.springframework.security.web.filterchainproxy.dofilter(filterchainproxy.java:150)     @ org.springframework.web.filter.delegatingfilterproxy.invokedelegate(delegatingfilterproxy.java:237)     @ org.springframework.web.filter.delegatingfilterproxy.dofilter(delegatingfilterproxy.java:167)     @ org.apache.catalina.core.applicationfilterchain.internaldofilter(applicationfilterchain.java:235)     @ org.apache.catalina.core.applicationfilterchain.dofilter(applicationfilterchain.java:206)     @ financeiro.web.filter.conexaohibernatefilter.dofilter(conexaohibernatefilter.java:24)     @ org.apache.catalina.core.applicationfilterchain.internaldofilter(applicationfilterchain.java:235)     @ org.apache.catalina.core.applicationfilterchain.dofilter(applicationfilterchain.java:206)     @ org.apache.catalina.core.standardwrappervalve.invoke(standardwrappervalve.java:233)     @ org.apache.catalina.core.standardcontextvalve.invoke(standardcontextvalve.java:191)     @ org.apache.catalina.core.standardhostvalve.invoke(standardhostvalve.java:127)     @ org.apache.catalina.valves.errorreportvalve.invoke(errorreportvalve.java:103)     @ org.apache.catalina.core.standardenginevalve.invoke(standardenginevalve.java:109)     @ org.apache.catalina.connector.coyoteadapter.service(coyoteadapter.java:293)     @ org.apache.coyote.http11.http11processor.process(http11processor.java:861)     @ org.apache.coyote.http11.http11protocol$http11connectionhandler.process(http11protocol.java:606)     @ org.apache.tomcat.util.net.jioendpoint$worker.run(jioendpoint.java:489)     @ java.lang.thread.run(thread.java:724) 

here xhtml page:

<?xml version="1.0" encoding="iso-8859-1"?> <!doctype html public "-//w3c//dtd xhtml 1.0 transitional//en" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"     xmlns:h="http://java.sun.com/jsf/html"     xmlns:f="http://java.sun.com/jsf/core"     xmlns:ui="http://java.sun.com/jsf/facelets"     xmlns:p="http://primefaces.prime.com.tr/ui">  <ui:composition template="/templates/interna.xhtml">     <ui:define name="titulo">         categorias     </ui:define>      <ui:define name="corpo">         <f:view contenttype="text/html">             <h:panelgrid columns="2" cellpadding="5">                 <h:panelgroup>                     <h:form>                         <p:commandbutton value="novo" action="#{categoriabean.novo}" update="edicao" />                     </h:form>                     <br />                     <h:form id="arvore">                         <p:tree value="#{categoriabean.categoriastree}" var="node"                             dynamic="false"                              selectionmode="single"                             nodeselectlistener="#{categoriabean.selecionar}"                             update="edicao"                             expandanim="fade_in" collapseanim="fade_out">                             <p:treenode>                                 <h:outputtext value="#{node.descricao}" />                             </p:treenode>                         </p:tree>                     </h:form>                 </h:panelgroup>                  <h:panelgroup id="edicao">                     <h:messages />                     <h:form rendered="#{categoriabean.mostraedicao}">                         <h:inputhidden value="#{categoriabean.editada.codigo}" />                         <h:inputhidden value="#{categoriabean.editada.fator}" />                         <h:panelgrid columns="2">                             <h:outputlabel value="pai" />                             <h:selectonemenu value="#{categoriabean.editada.pai}">                                 <f:selectitems value="#{categoriabean.categoriasselect}" />                             </h:selectonemenu>                             <h:outputlabel value="descrição" />                             <h:inputtext value="#{categoriabean.editada.descricao}" />                             <h:outputtext />                             <h:panelgroup>                                 <p:commandbutton value="salvar" action="#{categoriabean.salvar}"                                      update="edicao, arvore" />                                 <p:commandbutton value="excluir" action="#{categoriabean.excluir}"                                      update="edicao, arvore" />                             </h:panelgroup>                             <h:outputtext />                             <p:commandbutton value="nova subcategoria" action="#{categoriabean.novo}"                                  update="edicao" />                         </h:panelgrid>                     </h:form>                 </h:panelgroup>             </h:panelgrid>         </f:view>     </ui:define> </ui:composition>  </html> 

here bean class:

@managedbean(name = "categoriabean") @requestscoped public class categoriabean {     private treenode categoriastree;     private categoria editada = new categoria();     private list<selectitem> categoriasselect;     private boolean mostraedicao = false;      public void novo() {         categoria pai = null;         if (this.editada.getcodigo() != null) {             categoriarn categoriarn = new categoriarn();             pai = categoriarn.carregar(this.editada.getcodigo());         }         this.editada = new categoria();         this.editada.setpai(pai);         this.mostraedicao = true;     }      public void selecionar(nodeselectevent event) {         this.editada = (categoria) event.gettreenode().getdata();         categoria pai = this.editada.getpai();         if (this.editada != null && pai != null && pai.getcodigo() != null) {             this.mostraedicao = true;         }         else {             this.mostraedicao = false;         }     }      public void salvar() {         contextobean contextobean = contextoutil.getcontextobean();         categoriarn categoriarn = new categoriarn();         this.editada.setusuario(contextobean.getusuariologado());         categoriarn.salvar(this.editada);          this.editada = null;         this.mostraedicao = false;         this.categoriastree = null;         this.categoriasselect = null;     }      public void excluir() {         categoriarn categoriarn = new categoriarn();         categoriarn.excluir(this.editada);          this.editada = null;         this.mostraedicao = false;         this.categoriastree = null;         this.categoriasselect = null;     }      public treenode getcategoriastree() {         if (this.categoriastree == null) {             contextobean contextobean = contextoutil.getcontextobean();             categoriarn categoriarn = new categoriarn();             list<categoria> categorias = categoriarn.listar(contextobean.getusuariologado());             this.categoriastree = new defaulttreenode(null, null);             this.montardadostree(this.categoriastree, categorias);         }          return this.categoriastree;     }      private void montardadostree(treenode pai, list<categoria> lista) {         if (lista != null && lista.size() > 0) {             treenode filho = null;             (categoria categoria : lista) {                 filho = new defaulttreenode(categoria, pai);                 this.montardadostree(filho, categoria.getfilhos());             }         }     }      public list<selectitem> getcategoriasselect() {         if (this.categoriasselect == null) {             this.categoriasselect = new arraylist<selectitem>();             contextobean contextobean = contextoutil.getcontextobean();             categoriarn categoriarn = new categoriarn();             list<categoria> categorias = categoriarn.listar(contextobean.getusuariologado());             this.montardadosselect(this.categoriasselect, categorias, "");         }          return categoriasselect;     }      private void montardadosselect(list<selectitem> select, list<categoria> categorias, string prefixo) {         selectitem item = null;         if (categorias != null) {             (categoria categoria : categorias) {                 item = new selectitem(categoria, prefixo + categoria.getdescricao());                 item.setescape(false);                 select.add(item);                 this.montardadosselect(select, categoria.getfilhos(), prefixo + "&nbsp;&nbsp;");             }         }     }      public categoria geteditada() {         return editada;     }      public void seteditada(categoria editada) {         this.editada = editada;     }      public boolean ismostraedicao() {         return mostraedicao;     }      public void setmostraedicao(boolean mostraedicao) {         this.mostraedicao = mostraedicao;     }      public void setcategoriastree(treenode categoriastree) {         this.categoriastree = categoriastree;     }      public void setcategoriasselect(list<selectitem> categoriasselect) {         this.categoriasselect = categoriasselect;     } } 

the rn class (from business rule object):

public class categoriarn {     private categoriadao categoriadao;      public categoriarn() {         this.categoriadao = daofactory.criarcategoriadao();     }      public list<categoria> listar(usuario usuario) {         return this.categoriadao.listar(usuario);     }      public categoria salvar(categoria categoria) {         categoria pai = categoria.getpai();          if (pai == null) {             string msg = "a categoria " + categoria.getdescricao() + " deve ter um pai definido";             throw new illegalargumentexception(msg);         }          boolean mudoufator = pai.getfator() != categoria.getfator();          categoria.setfator(pai.getfator());         categoria = this.categoriadao.salvar(categoria);          if (mudoufator) {             categoria = this.carregar(categoria.getcodigo());             this.replicarfator(categoria, categoria.getfator());         }          return categoria;     }      private void replicarfator(categoria categoria, int fator) {         if (categoria.getfilhos() != null) {             (categoria filho : categoria.getfilhos()) {                 filho.setfator(fator);                 this.categoriadao.salvar(filho);                 this.replicarfator(filho, fator);             }         }     }      public void excluir(categoria categoria) {         this.categoriadao.excluir(categoria);     }      public void excluir(usuario usuario) {         list<categoria> lista = this.listar(usuario);         (categoria categoria : lista) {             this.categoriadao.excluir(categoria);         }     }      public categoria carregar(integer categoria) {         return this.categoriadao.carregar(categoria);     }      public void salvarestruturapadrao(usuario usuario) {         categoria despesas = new categoria(null, usuario, "despesas", -1);         despesas = this.categoriadao.salvar(despesas);          this.categoriadao.salvar(new categoria(despesas, usuario, "moradia", -1));         this.categoriadao.salvar(new categoria(despesas, usuario, "alimentação", -1));         this.categoriadao.salvar(new categoria(despesas, usuario, "vestuário", -1));         this.categoriadao.salvar(new categoria(despesas, usuario, "deslocamento", -1));         this.categoriadao.salvar(new categoria(despesas, usuario, "cuidados pessoais", -1));         this.categoriadao.salvar(new categoria(despesas, usuario, "educação", -1));         this.categoriadao.salvar(new categoria(despesas, usuario, "saúde", -1));         this.categoriadao.salvar(new categoria(despesas, usuario, "lazer", -1));         this.categoriadao.salvar(new categoria(despesas, usuario, "despesas financeiras", -1));          categoria receitas = new categoria(null, usuario, "receitas", 1);         receitas = this.categoriadao.salvar(receitas);          this.categoriadao.salvar(new categoria(receitas, usuario, "salário", 1));         this.categoriadao.salvar(new categoria(receitas, usuario, "restituições", 1));         this.categoriadao.salvar(new categoria(receitas, usuario, "rendimento", 1));     } } 

the mapped class:

@entity public class categoria implements serializable {      private static final long serialversionuid = -4996563889965803475l;       @id     @generatedvalue     private integer codigo;      @manytoone     @joincolumn(name = "categoriapai", nullable = true)     @foreignkey(name = "fkcategoriacategoria")     private categoria pai;      @manytoone     @joincolumn(name = "usuario")     @ondelete(action=ondeleteaction.cascade)     @foreignkey(name = "fkcategoriausuario")     private usuario usuario;      private string descricao;      private int fator;      @onetomany(fetch = fetchtype.eager, cascade = cascadetype.remove)     @joincolumn(name = "categoriapai", updatable = false)     @orderby(value="descricao asc")     private list<categoria> filhos;      public categoria() { }      public categoria(categoria pai, usuario usuario, string descricao, int fator) {         this.pai = pai;         this.usuario = usuario;         this.descricao = descricao;         this.fator = fator;     }      public integer getcodigo() {         return codigo;     }      public void setcodigo(integer codigo) {         this.codigo = codigo;     }      public categoria getpai() {         return pai;     }      public void setpai(categoria pai) {         this.pai = pai;     }      public usuario getusuario() {         return usuario;     }      public void setusuario(usuario usuario) {         this.usuario = usuario;     }      public string getdescricao() {         return descricao;     }      public void setdescricao(string descricao) {         this.descricao = descricao;     }      public int getfator() {         return fator;     }      public void setfator(int fator) {         this.fator = fator;     }      public list<categoria> getfilhos() {         return filhos;     }      public void setfilhos(list<categoria> filhos) {         this.filhos = filhos;     }      public static long getserialversionuid() {         return serialversionuid;     }      @override     public int hashcode() {         final int prime = 31;         int result = 1;         result = prime * result + ((codigo == null) ? 0 : codigo.hashcode());         return result;     }      @override     public boolean equals(object obj) {         if (this == obj)             return true;         if (obj == null)             return false;         if (getclass() != obj.getclass())             return false;         categoria other = (categoria) obj;         if (codigo == null) {             if (other.codigo != null)                 return false;         } else if (!codigo.equals(other.codigo))             return false;         return true;     }  } 

and have converter:

@facesconverter(forclass = categoria.class) public class categoriaconverter implements converter {      @override     public object getasobject(facescontext context, uicomponent component, string value) {         if (value != null && value.trim().length() > 0) {             integer codigo = integer.valueof(value);             try {                 categoriarn categoriarn = new categoriarn();                 return categoriarn.carregar(codigo);             }             catch (exception e) {                 throw new converterexception("não foi possível encontrar categoria de código " + value + ". " + e.getmessage());             }         }         return null;     }      @override     public string getasstring(facescontext context, uicomponent component, object value) {         if (value != null) {             categoria categoria = (categoria) value;             return categoria.getcodigo().tostring();         }         return "";     }  } 

this system book i'm studying

if need class, tell me want understand going on

i appreciate if can me.


Comments