Quando compilo dá o seguinte erro:
javax.servlet.ServletException: /contas/cadastroConta.jsp(35,6) '#{cadastroContaBean.pessoas}' Error reading 'pessoas' on type com.algaworks.dwjsf.financeiro.visao.CadastroContaBean
javax.faces.webapp.FacesServlet.service(FacesServlet.java:277)
Essa é minha classe CadastroContaBean:
[code]package com.algaworks.dwjsf.financeiro.visao;
import java.util.ArrayList;
import java.util.List;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;
import javax.faces.model.SelectItem;
import com.algaworks.dwjsf.financeiro.dominio.Conta;
import com.algaworks.dwjsf.financeiro.dominio.Pessoa;
import com.algaworks.dwjsf.financeiro.dominio.TipoConta;
import com.algaworks.dwjsf.financeiro.negocio.ContaService;
import com.algaworks.dwjsf.financeiro.negocio.PessoaService;
import com.algaworks.dwjsf.financeiro.negocio.RegraNegocioException;
public class CadastroContaBean {
private Conta contaEdicao;
private List tiposContas;
private List pessoas;
public String inicializar() {
this.contaEdicao = new Conta();
this.tiposContas = null;
this.pessoas = null;
return "cadastroConta";
}
public void salvar(ActionEvent event) {
FacesContext context = FacesContext.getCurrentInstance();
try {
new ContaService().salvar(this.contaEdicao);
this.contaEdicao = new Conta();
FacesMessage msg = new FacesMessage("Conta salva com sucesso!");
msg.setSeverity(FacesMessage.SEVERITY_INFO);
context.addMessage(null, msg);
} catch (RegraNegocioException e) {
context.addMessage(
null,
new FacesMessage(FacesMessage.SEVERITY_ERROR, e
.getMessage(), e.getMessage()));
} catch (Exception e) {
e.printStackTrace();
FacesMessage msg = new FacesMessage(
"Erro inesperado ao salvar conta!");
msg.setSeverity(FacesMessage.SEVERITY_ERROR);
context.addMessage(null, msg);
}
}
public List<SelectItem> getPessoas() {
if (this.pessoas == null) {
this.pessoas = new ArrayList<SelectItem>();
List<Pessoa> pessoas = new PessoaService().listarTodas();
this.pessoas.add(new SelectItem(null, "Selecione"));
for (Pessoa pessoa : pessoas) {
this.pessoas.add(new SelectItem(pessoa, pessoa.getNome()));
}
}
return this.pessoas;
}
public List<SelectItem> getTiposLancamentos() {
if (this.tiposContas == null) {
this.tiposContas = new ArrayList<SelectItem>();
for (TipoConta tipo : TipoConta.values()) {
this.tiposContas.add(new SelectItem(tipo, tipo.toString()));
}
}
return tiposContas;
}
public Conta getContaEdicao() {
return contaEdicao;
}
public void setContaEdicao(Conta contaEdicao) {
this.contaEdicao = contaEdicao;
}
}[/code]
Ha! O erro dá ao entrar no método inicializar() e get getPessoas()…
Outras classes que talvez precisem:
Classe PessoaService:
[code]package com.algaworks.dwjsf.financeiro.negocio;
import java.util.List;
import org.hibernate.Session;
import org.hibernate.criterion.Order;
import com.algaworks.dwjsf.financeiro.dominio.Pessoa;
import com.algaworks.dwjsf.financeiro.util.HibernateUtil;
public class PessoaService {
public Pessoa pesquisarPorId(Long id) {
Session session = HibernateUtil.getSession();
try {
return (Pessoa) session.get(Pessoa.class, id);
} finally {
session.close();
}
}
@SuppressWarnings("unchecked")
public List<Pessoa> listarTodas() {
Session session = HibernateUtil.getSession();
try {
return session.createCriteria(Pessoa.class)
.addOrder(Order.asc("nome")).list();
} finally {
session.close();
}
}
}[/code]
Classe HirbanteUtil:
[code]package com.algaworks.dwjsf.financeiro.util;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.AnnotationConfiguration;
public class HibernateUtil {
private static SessionFactory sessionFactory;
static {
try {
sessionFactory = new AnnotationConfiguration().configure()
.buildSessionFactory();
} catch (Throwable ex) {
throw new ExceptionInInitializerError(ex);
}
}
public static Session getSession() {
return sessionFactory.openSession();
}
}[/code]