List com Null Pointer

4 respostas
M

Bom Dia Pessoal,

Estou com um problemão.

Tenho uma lista no ManagedBean que recebe dados do banco - private List<Funcionario> funcionarios;

Também tenho outra lista que recebe os mesmos objetos da primeira lista, mas com os dados filtrados (pro exemplo: Só os funcionarios com status “E”) - private List<Funcionario> funcionariosE;

Também tenho dois métodos public List<Funcionario> getFuncionarios() e public List<Funcionario> getFuncionariosE() O Primeiro método retorna a lista de todos os funcionários e a segunda retorna uma lista de funcionários que apresentam um determinado status. Vale destacar o o status é do tipo String.

O Problema em questão é que a segunda lista não está sendo populada. O método que está apresentando o ponto nulo é o public List<Funcionario> getFuncionariosE()

Já utilizei o toString() e compareTo() para realizar a comparação, mas nenhum dos dois funcionou. E agora? Aonde estou errando?

Abaixo apresento o código do meu ManagedBean.

package br.gov.seinf.mb;

import java.io.Serializable;
import java.util.List;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;

import br.gov.seinf.dao.DAO;
import br.gov.seinf.dao.UsuarioDAO;
import br.gov.seinf.entity.Funcionario;
import br.gov.seinf.util.Msg;

@SessionScoped
@ManagedBean
public class FuncionarioBean implements Serializable {

	private static final long serialVersionUID = 1L;

	private LoginBean login;
	private Funcionario funcionario = new Funcionario();
	private List<Funcionario> funcionarios;
	private List<Funcionario> funcionariosE; // Lista com os Funcionários "Em Espera"
	DAO<Funcionario> dao = new DAO<Funcionario>(Funcionario.class);
	
	public void grava() {
		if (this.getFuncionario().getSenha().equals(this.getFuncionario().getRep_senha()) ) {
			this.getFuncionario().setStatus("Em Espera");
			this.getFuncionario().setPerfil("Usuário");
			dao.adiciona(funcionario);
			Msg.addMsgInfo("Funcionario Cadastrado Com Sucesso!");
			this.funcionario = new Funcionario();
				
		} else {
			Msg.addMsgError("Senha diferente do Repetir Senha");
		}
		 this.funcionarios = dao.listaTodos();
		}
	
	public List<Funcionario> getFuncionarios() {
		if (funcionarios == null) {
			System.out.println("Carregando Funcionarios...");
			funcionarios = new DAO<Funcionario>(Funcionario.class).listaTodos();
		}
		return funcionarios;
	}
	
	public String efetuaLogin() {
		UsuarioDAO dao = new UsuarioDAO();
		boolean loginValido = dao.existe(this.funcionario);
		if (loginValido) {
			return "home.xhtml?faces-redirect=true";
		} else {
			this.funcionario = new Funcionario();
			return "login.xhtml?faces-redirect=true";
		}
	}

	public boolean isLogado() {
		return funcionario.getLogin() != null;
	}
	
	
	// Método para Listar todos os Funcionários com Status "Em Espera"
	public List<Funcionario> getFuncionariosE() {
		for (Funcionario func : this.getFuncionarios()) {
			if(func.getStatus().compareTo("E") == 0){
				funcionariosE.add(func);
			}
		}
		return funcionariosE;
	} 
	
	
	
	/** Getters and Setters **/
	
	
	public Funcionario getFuncionario() {
		return funcionario;
	}

	public void setFuncionario(Funcionario funcionario) {
		this.funcionario = funcionario;
	}

	public DAO<Funcionario> getDao() {
		return dao;
	}

	public void setDao(DAO<Funcionario> dao) {
		this.dao = dao;
	}

	public void setFuncionarios(List<Funcionario> funcionarios) {
		this.funcionarios = funcionarios;
	}

	public LoginBean getLogin() {
		return login;
	}

	public void setLogin(LoginBean login) {
		this.login = login;
	}


}

Desde já agradeço a todos que me ajudarem. Obrigado!!!

4 Respostas

diego.sas

Ja tentou trocar…

if(func.getStatus().compareTo("E") == 0){  
    //......
}
//por
  if(func.getStatus().equalsIgnoreCase("E") ){  
 //......
}
B

Em algum lugar, você tem de inicializar funcionariosE com uma lista vazia, tal como um new ArrayList();

diego.sas
// Método para Listar todos os Funcionários com Status "Em Espera"   
    public List<Funcionario> getFuncionariosE() {   
        funcionariosE = new ArrayList<Funcionario>();
        for (Funcionario func : this.getFuncionarios()) {   
            if(func.getStatus().equalsIgnoreCase("E")){   
                funcionariosE.add(func);   
            }   
        }   
        return funcionariosE;   
    }
M

Obrigado a todos vocês. Problema solucionada.

Valeu!!!

Criado 10 de abril de 2012
Ultima resposta 11 de abr. de 2012
Respostas 4
Participantes 3