e ai galera boa noite… seguinte tenho esse metodo aqui
HibernateDao<Pessoa> hibernatePessoas = new HibernateDao<Pessoa>(Pessoa.class);
fornecedores = hibernatePessoas.getFornecedores();
fornecedor.setNome("Todos");
fornecedores.add(fornecedor);
return fornecedores;
mas quando eu adiciono esse objeto aqui
fornecedor.setNome(“Todos”);
fornecedores.add(fornecedor);
ele da java.lang.NullPointerException na hora de eu submeter o formulario
jsf
<p:selectOneMenu value="#{produtoBean.fornecedor}"
style="width: 200px" converter="fornecedorConverter">
<f:selectItems value="#{produtoBean.fornecedores}"
var="fornecedor" itemLabel="#{fornecedor.nome}"
itemValue="#{fornecedor}" />
</p:selectOneMenu>
Um desses dois caras (ou os dois) estão null.
fornecedores.add(fornecedor);
o fornecedor deve estar nullo
faz um teste, antes de chamar o fornecedores.add(fornecedor);
use:
system.out.println("fornecedor: "+fornecedor);
e veja o que retorna
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:dialog header="Ajustar Preços" widgetVar="dlg7" resizable="false"
width="450" height="230" modal="true" id="dialog7">
<br></br>
<h:panelGrid columns="2" cellspacing="10">
<h:outputLabel value="Categoria" />
<p:selectOneMenu value="#{produtoBean.categoria}"
style="width: 200px" converter="categoriaConverter">
<f:selectItems value="#{produtoBean.categorias}" var="categoria"
itemLabel="#{categoria.nomeCategoria}" itemValue="#{categoria}" />
</p:selectOneMenu>
<h:outputLabel value="Fornecedor" />
<p:selectOneMenu value="#{produtoBean.fornecedor}"
style="width: 200px" converter="fornecedorConverter">
<f:selectItems value="#{produtoBean.fornecedores}"
var="fornecedor" itemLabel="#{fornecedor.nome}"
itemValue="#{fornecedor}" />
</p:selectOneMenu>
<h:outputLabel value="Aplicar Alteração No:" />
<p:selectOneRadio id="options"
value="#{produtoBean.alteracaoPreco}">
<f:selectItem itemLabel="Custo do Produto" itemValue="custo" />
<f:selectItem itemLabel="Preço de Venda" itemValue="venda" />
</p:selectOneRadio>
</h:panelGrid>
<h:panelGrid columns="6" cellspacing="10">
<p:spacer height="0" width="20px" />
<h:outputLabel value="Aplicar Em: " style="text-align: left" />
<p:spacer height="0" width="20px" />
<p:inputText value="#{produtoBean.porcentagemAlteracao}"
style="width: 60px; align: left" />
<p:spacer height="0" width="2px" />
<h:outputLabel value=" %" />
</h:panelGrid>
<br></br>
<p:commandButton oncomplete="confirmation1.show()"
icon="ui-icon-check" style="width: 40px" />
</p:dialog>
<p:confirmDialog id="confirmDialog1" message="Confirma Alteração?"
severity="alert" widgetVar="confirmation1">
<p:commandButton id="confirm1" value="Sim" update="tbl1, messages"
oncomplete="confirmation1.hide()"
actionListener="#{produtoBean.atualizarPrecos}">
</p:commandButton>
<p:commandButton id="decline1" value="Não"
onclick="confirmation1.hide()" type="button" />
</p:confirmDialog>
<!-- Fim Edição de Preços -->
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.
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);
return fornecedores;
ta ai meu bean inteiro
package br.com.vendas.controller;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;
import br.com.vendas.beans.Categoria;
import br.com.vendas.beans.Pessoa;
import br.com.vendas.beans.Produto;
import br.com.vendas.dao.HibernateDao;
@SessionScoped
@ManagedBean
public class ProdutoBean implements Serializable {
private static final long serialVersionUID = 1L;
private HibernateDao<Produto> produtoDao = new HibernateDao<Produto>(Produto.class);
private Produto produto = new Produto();
private List<Produto> produtos = new ArrayList<Produto>();
private Produto produtoUpdate = new Produto();
private String filtro = new String();
private String param = new String();
private Categoria categoria = new Categoria();
private List<Categoria> categorias = new ArrayList<Categoria>();
private Pessoa fornecedor = new Pessoa();
private List<Pessoa> fornecedores = new ArrayList<Pessoa>();
private String alteracaoPreco = new String();
private Float porcentagemAlteracao = new Float(0);
public void salvar() {
try {
produtoDao.salvar(produto);
FacesContext context = FacesContext.getCurrentInstance();
context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Produto Salvo!", " "));
} catch (Exception e) {
FacesContext context = FacesContext.getCurrentInstance();
context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Erro! " + e, " "));
} finally {
produto = new Produto();
produtoDao = new HibernateDao<Produto>(Produto.class);
}
}
public void deletar() {
try {
produtoDao.deletar(produto);
FacesContext context = FacesContext.getCurrentInstance();
context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Produto Deletado!", " "));
} catch (Exception e) {
FacesContext context = FacesContext.getCurrentInstance();
context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_FATAL, "Erro! " + e, " "));
} finally {
produto = new Produto();
produtoDao = new HibernateDao<Produto>(Produto.class);
}
}
public List<Produto> getProdutos() {
try {
if (filtro.equals("codigoBarras")) {
produtos = produtoDao.getFiltro("from Produto as prod where prod.codigoBarras like :codigoBarras", param, filtro);
} else if (filtro.equals("descricao")) {
produtos = produtoDao.getFiltro("from Produto as prod where prod.descricao like :descricao", param, filtro);
} else {
produtos = produtoDao.getBeans();
}
} catch (Exception e) {
FacesContext context = FacesContext.getCurrentInstance();
context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_FATAL, "Erro! " + e, " "));
}
return produtos;
}
public void atualizar() {
try {
produtoDao.atualizar(produtoUpdate);
FacesContext context = FacesContext.getCurrentInstance();
context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Produto Atualizado!", " "));
} catch (Exception e) {
FacesContext context = FacesContext.getCurrentInstance();
context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_FATAL, "Erro! " + e, " "));
} finally {
produtoUpdate = new Produto();
produtoDao = new HibernateDao<Produto>(Produto.class);
}
}
public void limpar() {
produto = new Produto();
produtoUpdate = new Produto();
}
public void atualizarPrecos() {
try {
porcentagemAlteracao = porcentagemAlteracao / 100;
if (alteracaoPreco.equals("custo")) {
if (categoria.getNomeCategoria().equals("Todos") && (fornecedor.getNome().equals("Todos"))) {
produtos = produtoDao.getBeans();
for (int i = 0; i < produtos.size(); ++i) {
produto = produtos.get(i);
produto.setPrecoCusto(produtos.get(i).getPrecoCusto() * porcentagemAlteracao + produtos.get(i).getPrecoCusto());
produtoDao.atualizar(produto);
}
} else if (categoria.getNomeCategoria().equals("Todos") && fornecedor.getNome() != "Todos") {
produtos = produtoDao.atualizarPrecos("FROM Produto WHERE id_pessoa='" + fornecedor.getIdPessoa() + "'");
for (int i = 0; i < produtos.size(); ++i) {
produto = produtos.get(i);
produto.setPrecoCusto(produtos.get(i).getPrecoCusto() * porcentagemAlteracao + produtos.get(i).getPrecoCusto());
produtoDao.atualizar(produto);
}
} else if (fornecedor.getNome().equals("Todos") && categoria.getNomeCategoria() != "Todos") {
produtos = produtoDao.atualizarPrecos("FROM Produto WHERE id_categoria='" + categoria.getIdCategoria() + "'");
for (int i = 0; i < produtos.size(); ++i) {
produto = produtos.get(i);
produto.setPrecoCusto(produtos.get(i).getPrecoCusto() * porcentagemAlteracao + produtos.get(i).getPrecoCusto());
produtoDao.atualizar(produto);
}
} else if (fornecedor.getNome() != "Todos" && categoria.getNomeCategoria() != "Todos") {
produtos = produtoDao.atualizarPrecos("FROM Produto WHERE id_pessoa='" + fornecedor.getIdPessoa() + "' AND id_categoria='" + categoria.getIdCategoria() + "'");
for (int i = 0; i < produtos.size(); ++i) {
produto = produtos.get(i);
produto.setPrecoCusto(produtos.get(i).getPrecoCusto() * porcentagemAlteracao + produtos.get(i).getPrecoCusto());
produtoDao.atualizar(produto);
}
}
} else if (alteracaoPreco.equals("venda")) {
if (categoria.getNomeCategoria().equals("Todos") && (fornecedor.getNome().equals("Todos"))) {
produtos = produtoDao.getBeans();
for (int i = 0; i < produtos.size(); ++i) {
produto = new Produto();
produto = produtos.get(i);
produto.setValor(produtos.get(i).getValor() * porcentagemAlteracao + produtos.get(i).getValor());
produtoDao.atualizar(produto);
}
} else if (categoria.getNomeCategoria().equals("Todos") && fornecedor.getNome() != "Todos") {
produtos = produtoDao.atualizarPrecos("FROM Produto WHERE id_pessoa='" + fornecedor.getIdPessoa() + "'");
for (int i = 0; i < produtos.size(); ++i) {
produto = new Produto();
produto = produtos.get(i);
produto.setValor(produtos.get(i).getValor() * porcentagemAlteracao + produtos.get(i).getValor());
produtoDao.atualizar(produto);
}
} else if (fornecedor.getNome().equals("Todos") && categoria.getNomeCategoria() != "Todos") {
produtos = produtoDao.atualizarPrecos("FROM Produto WHERE id_categoria='" + categoria.getIdCategoria() + "'");
for (int i = 0; i < produtos.size(); ++i) {
produto = new Produto();
produto = produtos.get(i);
produto.setValor(produtos.get(i).getValor() * porcentagemAlteracao + produtos.get(i).getValor());
produtoDao.atualizar(produto);
}
} else if (fornecedor.getNome() != "Todos" && categoria.getNomeCategoria() != "Todos") {
produtos = produtoDao.atualizarPrecos("FROM Produto WHERE id_pessoa='" + fornecedor.getIdPessoa() + "' AND id_categoria='" + categoria.getIdCategoria() + "'");
for (int i = 0; i < produtos.size(); ++i) {
produto = new Produto();
produto = produtos.get(i);
produto.setValor(produtos.get(i).getValor() * porcentagemAlteracao + produtos.get(i).getValor());
produtoDao.atualizar(produto);
}
}
}
FacesContext context = FacesContext.getCurrentInstance();
context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Preços Atualizados!", " "));
} catch (Exception e) {
System.out.println(e);
FacesContext context = FacesContext.getCurrentInstance();
context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_FATAL, "Erro! " + e, " "));
} finally {
alteracaoPreco = new String();
porcentagemAlteracao = new Float(0);
categoria = new Categoria();
fornecedor = new Pessoa();
produto = new Produto();
}
}
public List<Categoria> getCategorias() {
HibernateDao<Categoria> hibernateCat = new HibernateDao<Categoria>(Categoria.class);
categorias = hibernateCat.getBeans();
return categorias;
}
public List<Pessoa> getFornecedores() {
HibernateDao<Pessoa> hibernatePessoas = new HibernateDao<Pessoa>(Pessoa.class);
fornecedores = hibernatePessoas.getFornecedores();
return fornecedores;
}
public void setCategorias(List<Categoria> categorias) {
this.categorias = categorias;
}
public HibernateDao<Produto> getProdutoDao() {
return produtoDao;
}
public void setProdutoDao(HibernateDao<Produto> produtoDao) {
this.produtoDao = produtoDao;
}
public Produto getProduto() {
return produto;
}
public void setProduto(Produto produto) {
this.produto = produto;
}
public void setProdutos(List<Produto> produtos) {
this.produtos = produtos;
}
public Produto getProdutoUpdate() {
return produtoUpdate;
}
public void setProdutoUpdate(Produto produtoUpdate) {
this.produtoUpdate = produtoUpdate;
}
public static long getSerialversionuid() {
return serialVersionUID;
}
public String getFiltro() {
return filtro;
}
public void setFiltro(String filtro) {
this.filtro = filtro;
}
public String getParam() {
return param;
}
public void setParam(String param) {
this.param = param;
}
public Categoria getCategoria() {
return categoria;
}
public void setCategoria(Categoria categoria) {
this.categoria = categoria;
}
public Pessoa getFornecedor() {
return fornecedor;
}
public void setFornecedor(Pessoa fornecedor) {
this.fornecedor = fornecedor;
}
public void setFornecedores(List<Pessoa> fornecedores) {
this.fornecedores = fornecedores;
}
public String getAlteracaoPreco() {
return alteracaoPreco;
}
public void setAlteracaoPreco(String alteracaoPreco) {
this.alteracaoPreco = alteracaoPreco;
}
public Float getPorcentagemAlteracao() {
return porcentagemAlteracao;
}
public void setPorcentagemAlteracao(Float porcentagemAlteracao) {
this.porcentagemAlteracao = porcentagemAlteracao;
}
}
Sensacional, mas o código necessário é o do getFornecedores().
o que ele está retornando ?
ele retorna uma lista certinho o problema é que assim funciona
public List<Pessoa> getFornecedores() {
HibernateDao<Pessoa> hibernatePessoas = new HibernateDao<Pessoa>(Pessoa.class);
fornecedores = hibernatePessoas.getFornecedores();
return fornecedores;
}
mas eu preciso assim
public List<Pessoa> getFornecedores() {
HibernateDao<Pessoa> hibernatePessoas = new HibernateDao<Pessoa>(Pessoa.class);
fornecedores = hibernatePessoas.getFornecedores();
fornecedor.setNome("Todos");
fornecedores.add(fornecedor);
return fornecedores;
}
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.
caralho!
amigo na boa, refatora seu código, ta um espaguete que só!
artigo que pode lhe ajudar http://msdn.microsoft.com/pt-br/magazine/cc947917.aspx
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();
[quote=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(); [/quote]
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.
[quote=digaoneves][quote=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(); [/quote]
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.[/quote]
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();
}