uma duvida precisa dos get e set do listaEmpresa ?
meu xhtml inserirPessoa
<h:selectOneMenuvalue="#{pessoaBean.pessoa.empresa}"required="true"requiredMessage="Informe a Empresa"><f:selectItemsvalue="#{empresaBean.listaEmpresa}"/></h:selectOneMenu>
aqui ele funciona blz que é chamado da xhtml de listarEmpresas
vou postar o codigo novamente que fiz algumas alteracoes…
Hebert_Coelho
E como está o método listar? E como está o método que dá erro?
E
edypva
eu alterei em vez de usar o ManagerBean de empresa para carregar o list passei para o ManagerBean de pessoas
e nele estou usando o DAO da empresa… isto esta correto ?
@Named(value="pessoaBean")@SessionScopedpublicclassPessoaBeanimplementsSerializable{@EJBprivatePessoaDAOpessoaDAO;@EJBprivateEmpresaDAOpEmpresaDAO;privatePessoapessoa=newPessoa();privateList<Pessoa>pessoas;privateList<SelectItem>selectItems=newArrayList<SelectItem>();publicPessoaBean(){selectItems=fillSelectItems();}publicList<SelectItem>fillSelectItems(){ArrayList<SelectItem>lista=newArrayList<SelectItem>();List<Empresa>resultado=pEmpresaDAO.listar();for(Empresateste:resultado){lista.add(newSelectItem(teste.getCodigo(),teste.getDescricao()));}returnlista;}/** * @return the selectItems */publicList<SelectItem>getSelectItems(){returnselectItems;}/** * @param selectItems the selectItems to set */publicvoidsetSelectItems(List<SelectItem>selectItems){this.selectItems=selectItems;}
Meu empresaDAO
@StatelesspublicclassEmpresaDAO{@PersistenceContext(unitName="TCCPU")privateEntityManagerem;publicList<Empresa>listar(){List<Empresa>empresa=null;try{Queryquery=em.createQuery("Select c from Empresa c");empresa=query.getResultList();}catch(Exceptione){e.printStackTrace();}returnempresa;}
e no meu xhtml esta assim
<h:selectOneMenuvalue="#{pessoaBean.pessoa.empresa.codigo}"required="true"requiredMessage="Informe a Empresa"><f:selectItemsvalue="#{pessoaBean.selectItems}"/></h:selectOneMenu>
mas da mesma forma qndu eu chamo o pEmpresaDAO.listar();
ele retorna null
o em (EntityManager) esta null debugando…
Hebert_Coelho
Então ele ta null o tempo todo? É isso?
mas da mesma forma qndu eu chamo o pEmpresaDAO.listar();
ele retorna null
E
edypva
o tempo todo não pq quando acesso a xhtml de empresas, as empresas são carregadas corretamente…
ele grava , altera e remove normal.
o EmpresaDAO completo
/* * To change this template, choose Tools | Templates * and open the template in the editor. */packagedao;importjava.util.List;importjavax.ejb.Stateless;importjavax.persistence.EntityManager;importjavax.persistence.PersistenceContext;importjavax.persistence.Query;importmodel.Empresa;/** * * @author edy */@StatelesspublicclassEmpresaDAO{@PersistenceContext(unitName="TCCPU")privateEntityManagerem;publicbooleangravar(Empresaempresa){booleansucesso=false;try{em.merge(empresa);sucesso=true;}catch(Exceptione){e.printStackTrace();}returnsucesso;}publicEmpresaselecionar(Longcodigo){Empresaempresa=null;try{empresa=em.find(Empresa.class,codigo);}catch(Exceptione){e.printStackTrace();}returnempresa;}publicbooleanremover(Empresaempresa){booleansucesso=false;try{empresa=em.find(Empresa.class,empresa.getCodigo());em.remove(empresa);sucesso=true;}catch(Exceptione){e.printStackTrace();}returnsucesso;}publicList<Empresa>listar(){List<Empresa>empresa=null;try{Queryquery=em.createQuery("Select c from Empresa c");empresa=query.getResultList();}catch(Exceptione){e.printStackTrace();}returnempresa;}}
E
edypva
Resolvido !!!
fiz direto no get do atributo segue o codigo como ficou.
meu xhtml
<h:selectOneMenuvalue="#{pessoaBean.pessoa.empresa.codigo}"required="true"requiredMessage="Informe a Empresa"><f:selectItemsvalue="#{empresaBean.selectItems}"/></h:selectOneMenu>
note que ele esta gravando de uma ManagerBean e buscando de outra ManagerBean…
Meu EmpresaBean que carrega os dados para o SelectOneMenu
@Named(value="empresaBean")@SessionScopedpublicclassEmpresaBeanimplementsSerializable{@EJBprivateEmpresaDAOempresaDAO;privateEmpresaempresa=newEmpresa();privateList<Empresa>empresas;privateList<SelectItem>selectItems;/** * @return the selectItems */publicList<SelectItem>getSelectItems(){selectItems=newArrayList<SelectItem>();List<Empresa>result=empresaDAO.listar();for(Empresateste:result){selectItems.add(newSelectItem(teste.getCodigo(),teste.getDescricao()));}returnselectItems;}/** * @param selectItems the selectItems to set */publicvoidsetSelectItems(List<SelectItem>selectItems){this.selectItems=selectItems;}
acredito que o null era a falta do código : selectItems = new ArrayList();
eu tinha testando antes mas com tantos testes que fiz perdi ele ai quando acertei o método de buscar esquecia de instanciar o meu list de SelectItem