faz um teste, antes de chamar o fornecedores.add(fornecedor);
use:
system.out.println("fornecedor: "+fornecedor);
e veja o que retorna
M
michelorth_92
carra ele não ta null pq ele mostra na lista no selectOneMenu só q quando eu aperto o botão salvar da o null pointer
meu jsf
<!-- Começo Edição de Preços --><p:dialogheader="Ajustar Preços"widgetVar="dlg7"resizable="false"width="450"height="230"modal="true"id="dialog7"><br></br><h:panelGridcolumns="2"cellspacing="10"><h:outputLabelvalue="Categoria"/><p:selectOneMenuvalue="#{produtoBean.categoria}"style="width: 200px"converter="categoriaConverter"><f:selectItemsvalue="#{produtoBean.categorias}"var="categoria"itemLabel="#{categoria.nomeCategoria}"itemValue="#{categoria}"/></p:selectOneMenu><h:outputLabelvalue="Fornecedor"/><p:selectOneMenuvalue="#{produtoBean.fornecedor}"style="width: 200px"converter="fornecedorConverter"><f:selectItemsvalue="#{produtoBean.fornecedores}"var="fornecedor"itemLabel="#{fornecedor.nome}"itemValue="#{fornecedor}"/></p:selectOneMenu><h:outputLabelvalue="Aplicar Alteração No:"/><p:selectOneRadioid="options"value="#{produtoBean.alteracaoPreco}"><f:selectItemitemLabel="Custo do Produto"itemValue="custo"/><f:selectItemitemLabel="Preço de Venda"itemValue="venda"/></p:selectOneRadio></h:panelGrid><h:panelGridcolumns="6"cellspacing="10"><p:spacerheight="0"width="20px"/><h:outputLabelvalue="Aplicar Em: "style="text-align: left"/><p:spacerheight="0"width="20px"/><p:inputTextvalue="#{produtoBean.porcentagemAlteracao}"style="width: 60px; align: left"/><p:spacerheight="0"width="2px"/><h:outputLabelvalue=" %"/></h:panelGrid><br></br><p:commandButtononcomplete="confirmation1.show()"icon="ui-icon-check"style="width: 40px"/></p:dialog><p:confirmDialogid="confirmDialog1"message="Confirma Alteração?"severity="alert"widgetVar="confirmation1"><p:commandButtonid="confirm1"value="Sim"update="tbl1, messages"oncomplete="confirmation1.hide()"actionListener="#{produtoBean.atualizarPrecos}"></p:commandButton><p:commandButtonid="decline1"value="Não"onclick="confirmation1.hide()"type="button"/></p:confirmDialog><!-- Fim Edição de Preços -->
Rodrigo_Sasaki
o método getFornecedores() retorna o que quando não encontra nada? null ou uma lista vazia?
Um método que retorna uma lista, sempre deve retornar uma lista vazia quando não encontra nada, nunca null.
robinsonbsilva
michelorth_92,
Se possível mostra um pouco mais do código.
Onde e como vc está declarando a varíavel fornecedores ?
HibernateDao<Pessoa> hibernatePessoas = new HibernateDao<Pessoa>(Pessoa.class); fornecedores=hibernatePessoas.getFornecedores(); fornecedor.setNome("Todos"); fornecedores.add(fornecedor); returnfornecedores;
M
michelorth_92
ta ai meu bean inteiro
packagebr.com.vendas.controller;importjava.io.Serializable;importjava.util.ArrayList;importjava.util.List;importjavax.faces.application.FacesMessage;importjavax.faces.bean.ManagedBean;importjavax.faces.bean.SessionScoped;importjavax.faces.context.FacesContext;importbr.com.vendas.beans.Categoria;importbr.com.vendas.beans.Pessoa;importbr.com.vendas.beans.Produto;importbr.com.vendas.dao.HibernateDao;@SessionScoped@ManagedBeanpublicclassProdutoBeanimplementsSerializable{privatestaticfinallongserialVersionUID=1L;privateHibernateDao<Produto>produtoDao=newHibernateDao<Produto>(Produto.class);privateProdutoproduto=newProduto();privateList<Produto>produtos=newArrayList<Produto>();privateProdutoprodutoUpdate=newProduto();privateStringfiltro=newString();privateStringparam=newString();privateCategoriacategoria=newCategoria();privateList<Categoria>categorias=newArrayList<Categoria>();privatePessoafornecedor=newPessoa();privateList<Pessoa>fornecedores=newArrayList<Pessoa>();privateStringalteracaoPreco=newString();privateFloatporcentagemAlteracao=newFloat(0);publicvoidsalvar(){try{produtoDao.salvar(produto);FacesContextcontext=FacesContext.getCurrentInstance();context.addMessage(null,newFacesMessage(FacesMessage.SEVERITY_INFO,"Produto Salvo!"," "));}catch(Exceptione){FacesContextcontext=FacesContext.getCurrentInstance();context.addMessage(null,newFacesMessage(FacesMessage.SEVERITY_ERROR,"Erro! "+e," "));}finally{produto=newProduto();produtoDao=newHibernateDao<Produto>(Produto.class);}}publicvoiddeletar(){try{produtoDao.deletar(produto);FacesContextcontext=FacesContext.getCurrentInstance();context.addMessage(null,newFacesMessage(FacesMessage.SEVERITY_INFO,"Produto Deletado!"," "));}catch(Exceptione){FacesContextcontext=FacesContext.getCurrentInstance();context.addMessage(null,newFacesMessage(FacesMessage.SEVERITY_FATAL,"Erro! "+e," "));}finally{produto=newProduto();produtoDao=newHibernateDao<Produto>(Produto.class);}}publicList<Produto>getProdutos(){try{if(filtro.equals("codigoBarras")){produtos=produtoDao.getFiltro("from Produto as prod where prod.codigoBarras like :codigoBarras",param,filtro);}elseif(filtro.equals("descricao")){produtos=produtoDao.getFiltro("from Produto as prod where prod.descricao like :descricao",param,filtro);}else{produtos=produtoDao.getBeans();}}catch(Exceptione){FacesContextcontext=FacesContext.getCurrentInstance();context.addMessage(null,newFacesMessage(FacesMessage.SEVERITY_FATAL,"Erro! "+e," "));}returnprodutos;}publicvoidatualizar(){try{produtoDao.atualizar(produtoUpdate);FacesContextcontext=FacesContext.getCurrentInstance();context.addMessage(null,newFacesMessage(FacesMessage.SEVERITY_INFO,"Produto Atualizado!"," "));}catch(Exceptione){FacesContextcontext=FacesContext.getCurrentInstance();context.addMessage(null,newFacesMessage(FacesMessage.SEVERITY_FATAL,"Erro! "+e," "));}finally{produtoUpdate=newProduto();produtoDao=newHibernateDao<Produto>(Produto.class);}}publicvoidlimpar(){produto=newProduto();produtoUpdate=newProduto();}publicvoidatualizarPrecos(){try{porcentagemAlteracao=porcentagemAlteracao/100;if(alteracaoPreco.equals("custo")){if(categoria.getNomeCategoria().equals("Todos")&&(fornecedor.getNome().equals("Todos"))){produtos=produtoDao.getBeans();for(inti=0;i<produtos.size();++i){produto=produtos.get(i);produto.setPrecoCusto(produtos.get(i).getPrecoCusto()*porcentagemAlteracao+produtos.get(i).getPrecoCusto());produtoDao.atualizar(produto);}}elseif(categoria.getNomeCategoria().equals("Todos")&&fornecedor.getNome()!="Todos"){produtos=produtoDao.atualizarPrecos("FROM Produto WHERE id_pessoa='"+fornecedor.getIdPessoa()+"'");for(inti=0;i<produtos.size();++i){produto=produtos.get(i);produto.setPrecoCusto(produtos.get(i).getPrecoCusto()*porcentagemAlteracao+produtos.get(i).getPrecoCusto());produtoDao.atualizar(produto);}}elseif(fornecedor.getNome().equals("Todos")&&categoria.getNomeCategoria()!="Todos"){produtos=produtoDao.atualizarPrecos("FROM Produto WHERE id_categoria='"+categoria.getIdCategoria()+"'");for(inti=0;i<produtos.size();++i){produto=produtos.get(i);produto.setPrecoCusto(produtos.get(i).getPrecoCusto()*porcentagemAlteracao+produtos.get(i).getPrecoCusto());produtoDao.atualizar(produto);}}elseif(fornecedor.getNome()!="Todos"&&categoria.getNomeCategoria()!="Todos"){produtos=produtoDao.atualizarPrecos("FROM Produto WHERE id_pessoa='"+fornecedor.getIdPessoa()+"' AND id_categoria='"+categoria.getIdCategoria()+"'");for(inti=0;i<produtos.size();++i){produto=produtos.get(i);produto.setPrecoCusto(produtos.get(i).getPrecoCusto()*porcentagemAlteracao+produtos.get(i).getPrecoCusto());produtoDao.atualizar(produto);}}}elseif(alteracaoPreco.equals("venda")){if(categoria.getNomeCategoria().equals("Todos")&&(fornecedor.getNome().equals("Todos"))){produtos=produtoDao.getBeans();for(inti=0;i<produtos.size();++i){produto=newProduto();produto=produtos.get(i);produto.setValor(produtos.get(i).getValor()*porcentagemAlteracao+produtos.get(i).getValor());produtoDao.atualizar(produto);}}elseif(categoria.getNomeCategoria().equals("Todos")&&fornecedor.getNome()!="Todos"){produtos=produtoDao.atualizarPrecos("FROM Produto WHERE id_pessoa='"+fornecedor.getIdPessoa()+"'");for(inti=0;i<produtos.size();++i){produto=newProduto();produto=produtos.get(i);produto.setValor(produtos.get(i).getValor()*porcentagemAlteracao+produtos.get(i).getValor());produtoDao.atualizar(produto);}}elseif(fornecedor.getNome().equals("Todos")&&categoria.getNomeCategoria()!="Todos"){produtos=produtoDao.atualizarPrecos("FROM Produto WHERE id_categoria='"+categoria.getIdCategoria()+"'");for(inti=0;i<produtos.size();++i){produto=newProduto();produto=produtos.get(i);produto.setValor(produtos.get(i).getValor()*porcentagemAlteracao+produtos.get(i).getValor());produtoDao.atualizar(produto);}}elseif(fornecedor.getNome()!="Todos"&&categoria.getNomeCategoria()!="Todos"){produtos=produtoDao.atualizarPrecos("FROM Produto WHERE id_pessoa='"+fornecedor.getIdPessoa()+"' AND id_categoria='"+categoria.getIdCategoria()+"'");for(inti=0;i<produtos.size();++i){produto=newProduto();produto=produtos.get(i);produto.setValor(produtos.get(i).getValor()*porcentagemAlteracao+produtos.get(i).getValor());produtoDao.atualizar(produto);}}}FacesContextcontext=FacesContext.getCurrentInstance();context.addMessage(null,newFacesMessage(FacesMessage.SEVERITY_INFO,"Preços Atualizados!"," "));}catch(Exceptione){System.out.println(e);FacesContextcontext=FacesContext.getCurrentInstance();context.addMessage(null,newFacesMessage(FacesMessage.SEVERITY_FATAL,"Erro! "+e," "));}finally{alteracaoPreco=newString();porcentagemAlteracao=newFloat(0);categoria=newCategoria();fornecedor=newPessoa();produto=newProduto();}}publicList<Categoria>getCategorias(){HibernateDao<Categoria>hibernateCat=newHibernateDao<Categoria>(Categoria.class);categorias=hibernateCat.getBeans();returncategorias;}publicList<Pessoa>getFornecedores(){HibernateDao<Pessoa>hibernatePessoas=newHibernateDao<Pessoa>(Pessoa.class);fornecedores=hibernatePessoas.getFornecedores();returnfornecedores;}publicvoidsetCategorias(List<Categoria>categorias){this.categorias=categorias;}publicHibernateDao<Produto>getProdutoDao(){returnprodutoDao;}publicvoidsetProdutoDao(HibernateDao<Produto>produtoDao){this.produtoDao=produtoDao;}publicProdutogetProduto(){returnproduto;}publicvoidsetProduto(Produtoproduto){this.produto=produto;}publicvoidsetProdutos(List<Produto>produtos){this.produtos=produtos;}publicProdutogetProdutoUpdate(){returnprodutoUpdate;}publicvoidsetProdutoUpdate(ProdutoprodutoUpdate){this.produtoUpdate=produtoUpdate;}publicstaticlonggetSerialversionuid(){returnserialVersionUID;}publicStringgetFiltro(){returnfiltro;}publicvoidsetFiltro(Stringfiltro){this.filtro=filtro;}publicStringgetParam(){returnparam;}publicvoidsetParam(Stringparam){this.param=param;}publicCategoriagetCategoria(){returncategoria;}publicvoidsetCategoria(Categoriacategoria){this.categoria=categoria;}publicPessoagetFornecedor(){returnfornecedor;}publicvoidsetFornecedor(Pessoafornecedor){this.fornecedor=fornecedor;}publicvoidsetFornecedores(List<Pessoa>fornecedores){this.fornecedores=fornecedores;}publicStringgetAlteracaoPreco(){returnalteracaoPreco;}publicvoidsetAlteracaoPreco(StringalteracaoPreco){this.alteracaoPreco=alteracaoPreco;}publicFloatgetPorcentagemAlteracao(){returnporcentagemAlteracao;}publicvoidsetPorcentagemAlteracao(FloatporcentagemAlteracao){this.porcentagemAlteracao=porcentagemAlteracao;}}
Rodrigo_Sasaki
Sensacional, mas o código necessário é o do getFornecedores().
o que ele está retornando ?
M
michelorth_92
ele retorna uma lista certinho o problema é que assim funciona
cara, julgando pela alteração no método que fez ele lançar uma NullPointerException, a única coisa que posso dizer é que seu fornecedor não está inicializado.
Cara o seu hibernatePessoas.getFornecedores() deveria vir com objetos Pessoas já construidos e com seus valores setados, não precisaria setar manualmente depois de buscar.
Tenta colocar um breakpoint nesse método e verifica como está vindo.
Se não vier nada o problema é nesse metodo hibernatePessoas.getFornecedores();
Rodrigo_Sasaki
satangoss:
Cara o seu hibernatePessoas.getFornecedores() deveria vir com objetos Pessoas já construidos e com seus valores setados, não precisaria setar manualmente depois de buscar.
Tenta colocar um breakpoint nesse método e verifica como está vindo.
Se não vier nada o problema é nesse metodo hibernatePessoas.getFornecedores();
De acordo com ele o método funciona, o que eu acredito que ele está tentando fazer, é adicionar um Fornecedor “Todos” à lista, além daqueles que ja vem do banco. Provavelmente só para popular algo na View.
satangoss
digaoneves:
satangoss:
Cara o seu hibernatePessoas.getFornecedores() deveria vir com objetos Pessoas já construidos e com seus valores setados, não precisaria setar manualmente depois de buscar.
Tenta colocar um breakpoint nesse método e verifica como está vindo.
Se não vier nada o problema é nesse metodo hibernatePessoas.getFornecedores();
De acordo com ele o método funciona, o que eu acredito que ele está tentando fazer, é adicionar um Fornecedor “Todos” à lista, além daqueles que ja vem do banco. Provavelmente só para popular algo na View.
Ok então possivelmente ele deve estar usando um selectOneMenu, com isso basta adicionar dentro do componente um item como :
<f:selectItem itemLabel="Todos" itemValue="0"/>
e só enviar o conteúdo da lista no getFornecedores
public List<Pessoa> getFornecedores() {
HibernateDao<Pessoa> hibernatePessoas = new HibernateDao<Pessoa>(Pessoa.class);
return hibernatePessoas.getFornecedores();
}