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!!!