Tela não carrega os campos[RESOLVIDO]

10 respostas
programaçãojsfjava
M

Estou com um erro quando eu faço alguma alteração no meu form e dou salvar e um novo ele limpa a tela e vai para tela de cadastrar um novo usuário.Quando isso acontece não carrega dois campos dessa tela. Parece um erro fácil de arrumar mais não estou conseguindo.


Bean

@ManagedBean(name = "usuarioMB")

@ViewScoped
public class UsuarioBean implements Serializable {

private Usuario usuario;

private List<Empresa> empresas;
private List<CentroCusto> centrosCusto;
private List<Programa> programas;
private List<Usuario> usuariosPesquisados;
private List<Permissao> permissoes;
private List<Usuario> usuariosDe;
private List<Usuario> usuariosPara;
private List<Sistema> sistemas;
private List<DepartamentoProjetos> dpProjetos;

private UsuarioDAO usuarioDAO;
private EmpresaDAO empresaDAO;
private CentroCustoDAO centroCustoDAO;
private ProgramaDAO programaDAO;
private PermissaoDAO permissaoDAO;
private SistemaDAO sistemaDAO;
private DepartamentoProjetosDAO departamentoProjetosDAO;

private int pesquisa;
private int usuarioDe;
private int usuarioPara;
private String usuarioPesquisa;
private String conteudoPesquisa;
private String verificaSenha;
private String confirmaEmail;
private String confirmaSenha;
private String senhaAux = "";
private boolean somenteLeitura;
private boolean podeSalvar;
private boolean statusNovo;
private boolean statusSalvar;
private boolean statusPesquisar;
private boolean statusCancelar;
private boolean isNovo;
private boolean showDialog;

public UsuarioBean() {
    this.usuario = new Usuario();
    usuario.setDepartamentoProjetos(new DepartamentoProjetos());
    this.usuarioDAO = new UsuarioDAO();
    this.empresaDAO = new EmpresaDAO();
    this.centroCustoDAO = new CentroCustoDAO();
    this.programaDAO = new ProgramaDAO();
    this.permissaoDAO = new PermissaoDAO();
    this.sistemaDAO = new SistemaDAO();
    this.departamentoProjetosDAO = new DepartamentoProjetosDAO();
    this.pesquisa = 1;
    //this.usuarioPesquisa = "";
    this.usuariosPesquisados = new ArrayList<Usuario>();
    this.permissoes = new ArrayList<Permissao>();
    this.dpProjetos = new ArrayList<DepartamentoProjetos>();
    this.somenteLeitura = false;
    this.confirmaEmail = "";
    this.confirmaSenha = "";
    this.statusNovo = false;
    this.statusPesquisar = false;
    this.statusSalvar = true;
    this.statusCancelar = true;
    this.showDialog = false;

    listarEmpresas();
    listarCentroCusto();
    listarProgramas();
    listarDepartamentoProjetos();

}

/**
 * Metodo que lista permissões de usuario
 *
 * @param id
 */
public void listarPermissoes(int id) {
   
    permissoes = permissaoDAO.listarPermissao(id);
}

public void listarSistemas() {
    sistemas = sistemaDAO.getSistemaByPesquisa(pesquisa, conteudoPesquisa);
}

/**
 * metodo testa se as senhas são equivalentes
 */
public void senhaEquivalente() {
    if (!usuario.getSenha().equals(this.confirmaSenha)) {
        this.confirmaSenha = "";
        UtilSistemas.mostrarMensagemErro("Campo inválido", "Senha incorreta!");
    }
}
/**
 * Método que verifica se o email é válido
 */
public void validarEmail() {
    if (!UtilSistemas.isEmailValido(usuario.getEmail())) {
        UtilSistemas.mostrarMensagemErro("Campo inválido", "Email incorreto!");
    }
}

/**
 * metodo testa se os emails digitados sao equivalentes
 */
public void emailEquivalente() {
    if (!usuario.getEmail().equals(this.confirmaEmail)) {
        this.confirmaEmail = "";
        UtilSistemas.mostrarMensagemErro("Email não validou", "Os emails não são equivalentes");

    }
}
/**
 * valida o cpf na view
 *
 */
public void validaCPF() {
    this.usuariosPesquisados = usuarioDAO.getUsuarioByPesquisa(3, usuario.getCPF());
    try {
        if (!UtilSistemas.isCPF(usuario.getCPF())) {
            usuario.setCPF("");
            throw new Exception("CPF Inválido");
        } else if (!usuariosPesquisados.isEmpty()) {
            usuario = usuarioDAO.getUsuarioByCPF(usuario.getCPF());

            if (usuario.getDepartamentoProjetos() == null) {
                usuario.setDepartamentoProjetos(new DepartamentoProjetos());
            }
            this.senhaAux = usuario.getSenha();
            this.somenteLeitura = true;
            listarPermissoes(usuario.getSeq());
            throw new Exception("CPF Já Cadastrado");
        }
    } catch (Exception e) {
        UtilSistemas.mostrarMensagemAlerta("Atenção!", e.getMessage());
    }
}
/**
 * Metodo que retorna uma lista de departamentos de projeto
 */
public void listarDepartamentoProjetos() {
    dpProjetos = departamentoProjetosDAO.listarDepartamentos();
}

/**
 * metodo verfica se o login esta cadastrado na base de dados
 */
public void validaLogin() {
    String str = usuario.getUserName();
    int idx = str.indexOf(" ");   //- 1 verdadeiro não tem espaço
    Usuario user = usuarioDAO.getUsuarioByLogin(usuario.getUserName());
    try {
        if (idx != -1) {
            throw new Exception("O nome de Usuário não deve conter espaços");
        } else if (usuario.getUserName().length() < 3) {
            throw new Exception("Usuário deve ter no minimo 3 digitos");
        }
        if (user.getUserName() != null) {
            throw new Exception("Usuario ja esta cadastrado");
        }

    } catch (Exception e) {
        usuario.setUserName("");
        UtilSistemas.mostrarMensagemErro("Erro", e.getMessage());
    }

}

/**
 * Método que valida os campos do cadastro
 *
 * @return
 */
public boolean isCamposValidos() {
    List<String> msgs = new ArrayList<String>();

    // cpf
    if (!UtilSistemas.isCPF(usuario.getCPF())) {
        usuario.setCPF("");
        msgs.add("CPF Inválido");
    } else if (!usuariosPesquisados.isEmpty()) {
        //usuario = usuarioDAO.getUsuarioByCPF(usuario.getCPF());
        this.somenteLeitura = true;
        //msgs.add("CPF Já Cadastrado");
    }
    //rg
    if (usuario.getRG().trim().length() < 5) {
        msgs.add("RG inválido");
    }

    // nome
    if (usuario.getNome().trim().length() < 3) {
        msgs.add("Nome inválido");
    }

    // data nasc
    if (usuario.getDataNasc() == null) {
        msgs.add("Data inválida");
    }

    // email
    if (senhaAux.equals("") && !usuario.getEmail().equals(this.confirmaEmail)) {
        msgs.add("Email inválido");
    }

    // email equivalente
    if (senhaAux.equals("") && !usuario.getEmail().equals(this.confirmaEmail)) {
        msgs.add("Email não são equivalentes");
    }

    //login
    String str = usuario.getUserName();
    int idx = str.indexOf(" ");   //- 1 verdadeiro não tem espaço
    Usuario user = usuarioDAO.getUsuarioByLogin(usuario.getUserName());
    if (idx != -1) {
        msgs.add("O nome de Usuário não deve conter espaços");
    }
    if (usuario.getUserName().length() < 3) {
        msgs.add("Usuário deve ter no minimo 3 digitos");
    }
//        if(user.getUserName() != null){

//                msgs.add(“Usuario ja esta cadastrado”);

//        }

if (usuario.getUserName() == null) {

msgs.add(Usuário Inválido);

}
// senha
    if (senhaAux.equals("") && !usuario.getSenha().equals(this.confirmaSenha)) {
        msgs.add("Senha inválida");
    }

    //                        
    if (!msgs.isEmpty()) {
        for (String s : msgs) {
            UtilSistemas.mostrarMensagemErro("Campo obrigatório", s);
        }
    }

    return (msgs.isEmpty());
}

public void pesquisar() {
    this.statusNovo = false;
    this.statusPesquisar = false;
    this.statusSalvar = false;
    this.statusCancelar = false;
    this.usuariosPesquisados = new ArrayList<Usuario>();
    if (!isNovo) {
        usuariosDe = usuarioDAO.listarUsuarios();
        usuariosPara = usuariosDe;
    }
}

/**
 * metodo salva usuario
 *
 * @throws Exception
 */
public void salvar() throws Exception {

    this.statusNovo = false;
    this.statusPesquisar = false;
    this.statusSalvar = true;
    this.statusCancelar = true;

    if (isCamposValidos()) {
        try {

            if (usuario.getSenha().equals("")) {
                usuario.setSenha(senhaAux);
                confirmaSenha = senhaAux;
            }
          
            usuario = usuarioDAO.salvar(usuario);
            if (usuario.getSeq() > 0 && permissoes.size() > 0) {
                permissaoDAO.salvarPermissoes(permissoes, usuario.getSeq(), isNovo);

            }


           if (isNovo) {
               usuariosDe = usuarioDAO.listarUsuarios();
                usuariosPara = usuariosDe;
                RequestContext.getCurrentInstance().execute("PF('dialogPerfil').show()");

           }

            UtilSistemas.mostrarMensagemSucesso("Sucesso", "Usuario Salvo");

        } catch (Exception e) {
            UtilSistemas.mostrarMensagemErro("Erro", e.getMessage());
        }

    }

}

/**
 * Metodo que copia o perfil de permissões
 */
public void copiarPerfil() {
//        isNovo = true;

List permissoesAux = new ArrayList();

permissoesAux = permissaoDAO.listarPermissao(usuarioPara);
for (Permissao p : permissoesAux) {
        deletarPermissao(p.getId());
    }

    permissoes = permissaoDAO.listarPermissao(usuarioDe);

    permissaoDAO.salvarPermissoes(permissoes, usuarioPara, isNovo);
    isNovo = false;

}

public void cancelar() {
    this.statusNovo = false;
    this.statusSalvar = true;
    this.statusPesquisar = false;
    this.statusCancelar = true;
    this.usuariosPesquisados = new ArrayList<Usuario>();
    isNovo = false;

}

/**
 * limpa tela
 */
public void novo() {

    this.usuario = new Usuario();
    this.confirmaEmail = "";
    this.confirmaSenha = "";
    this.usuariosPesquisados = new ArrayList<Usuario>();
    this.permissoes = new ArrayList<Permissao>();

// this.usuario.setDepartamentoProjetos(new DepartamentoProjetos());

this.isNovo = true;
    this.statusNovo = true;
    this.statusSalvar = false;
    this.statusPesquisar = true;
    this.statusCancelar = false;
    this.somenteLeitura = false;

}
/**
 * metodos retorna lista de usuario pesquisados
 *
 * @param pesquisa
 * @param usuario
 */
public void listarUsuarios() {
  
    usuariosPesquisados = usuarioDAO.getUsuarioByPesquisa(pesquisa, usuarioPesquisa);

}

/**
 * Metodo pra deletar permissão
 *
 * @param idPermissao
 */
public void deletarPermissao(int idPermissao) {
    permissaoDAO.deletarPermissao(idPermissao);
    listarPermissoes(usuario.getSeq());
    //RequestContext.getCurrentInstance().update("formCadastro:dtPermissoes");
}

/**
 * Metodo que retorna usuario pelo CPF
 *
 * @param CPF
 */
public void getUsuarioByCPF(String CPF) {
    usuario = usuarioDAO.getUsuarioByCPF(CPF);
}

/**
 * Metodo que lista empresas
 */
public void listarEmpresas() {
    empresas = empresaDAO.listarEmpresas();
}

/**
 * Metodo que retorna uma lista de programas ativos
 */
public void listarProgramas() {
    programas = programaDAO.listarProgramas();
}

/**
 * Metodo que lista programas pelo id do Sistema
 *
 * @param idSistema
 */
public void listarProgramasSistema(int idSistema) {
    programas = new ArrayList<Programa>();
   
    sistemas = new ArrayList<Sistema>();
    
   
    
    conteudoPesquisa = "";
    programas = programaDAO.listarProgramasByIdSistema(idSistema);
    int i = 0;
    for (Permissao p : permissoes) {

        for (i = 0; i < programas.size(); i++) {
            if (p.getPrograma().getIdPrograma() == programas.get(i).getIdPrograma()) {
                programas.remove(i);
            }
        }

    }

    if (programas.size() < 1) {
        RequestContext.getCurrentInstance().update("formCadastro:dlgSistema");
        UtilSistemas.mostrarMensagemAlerta("Atenção", "Todas as permissões deste sistemas já foram concedida ao usuário.");
        RequestContext.getCurrentInstance().execute("PF('dlgSistema').show();");
    } else {
        RequestContext.getCurrentInstance().execute("PF('dlgSistema').hide();");
        RequestContext.getCurrentInstance().update("formCadastro:dlgProgramas");
        RequestContext.getCurrentInstance().update("formCadastro:dlgSistema");
        RequestContext.getCurrentInstance().execute("PF('dlgProgramas').show();");
    }

}

/**
 * Metodo que adiciona uma nova permissao para usuario
 */
public void adicionarPermissao() {
    List<Programa> programasTemp = new ArrayList<Programa>();

    for (Programa p : programas) {
        if (p.isIsSelected()) {
            programasTemp.add(p);
        }
    }
  
    for (Programa p : programasTemp) {

        Permissao permissao = new Permissao();
        permissao.setIdUsuario(usuario.getSeq());
        permissao.setIsAcessa(true);
        permissao.setIsAltera(true);
        permissao.setIsInsere(true);
        permissao.setPrograma(p);
        permissao.setiUsuario(UtilSistemas.getUsuarioLogado().getSeq());

        permissoes.add(permissao);

    }
    


   
    permissaoDAO.salvarPermissoes(permissoes, usuario.getSeq(), isNovo);

    listarPermissoes(usuario.getSeq());

    RequestContext.getCurrentInstance().execute("PF('dlgProgramas').hide();");
    
    RequestContext.getCurrentInstance().update("formCadastro:pnlPermissao");

    UtilSistemas.mostrarMensagemSucesso("Sucesso!", "Permissão adicionada com sucesso!");

}

/**
 * Metodo que retorna uma lista de Centro de Custo
 */
public void listarCentroCusto() {
    centrosCusto = centroCustoDAO.listarCentroCusto();
}

public Usuario getUsuario() {
    return usuario;
}

public void setUsuario(Usuario usuario) {
    this.usuario = usuario;
    this.confirmaEmail = usuario.getEmail();
    this.confirmaSenha = usuario.getSenha();
    this.verificaSenha = usuario.getSenha();
    this.senhaAux = usuario.getSenha();
    this.usuarioPesquisa = "";

    if (usuario.getDepartamentoProjetos() == null) {
        usuario.setDepartamentoProjetos(new DepartamentoProjetos());
    }

    listarPermissoes(usuario.getSeq());
    pesquisar();
}

public List<Permissao> getPermissoes() {
    return permissoes;
}

public void setPermissoes(List<Permissao> permissoes) {
    this.permissoes = permissoes;
}

public List<Programa> getProgramas() {
    return programas;
}

public void setProgramas(List<Programa> programas) {
    this.programas = programas;
}

public List<Empresa> getEmpresas() {
    return empresas;
}

public void setEmpresas(List<Empresa> empresas) {
    this.empresas = empresas;
}

public List<CentroCusto> getCentrosCusto() {
    return centrosCusto;
}

public void setCentrosCusto(List<CentroCusto> centrosCusto) {
    this.centrosCusto = centrosCusto;
}

public int getPesquisa() {
    return pesquisa;
}

public void setPesquisa(int pesquisa) {
    this.pesquisa = pesquisa;
}

public String getUsuarioPesquisa() {
    return usuarioPesquisa;
}

public void setUsuarioPesquisa(String usuarioPesquisa) {
    this.usuarioPesquisa = usuarioPesquisa;
}

public List<Usuario> getUsuariosPesquisados() {
    return usuariosPesquisados;
}

public void setUsuariosPesquisados(List<Usuario> usuariosPesquisados) {
    this.usuariosPesquisados = usuariosPesquisados;
}

public String getVerificaSenha() {
    return verificaSenha;
}

public void setVerificaSenha(String verificaSenha) {
    this.verificaSenha = verificaSenha;
}

public boolean isSomenteLeitura() {
    return somenteLeitura;
}

public void setSomenteLeitura(boolean somenteLeitura) {
    this.somenteLeitura = somenteLeitura;
}

public boolean isPodeSalvar() {
    return podeSalvar;
}

public void setPodeSalvar(boolean podeSalvar) {
    this.podeSalvar = podeSalvar;
}

public String getConfirmaEmail() {
    return confirmaEmail;
}

public void setConfirmaEmail(String confirmaEmail) {
    this.confirmaEmail = confirmaEmail;
}

public String getConfirmaSenha() {
    return confirmaSenha;
}

public void setConfirmaSenha(String confirmaSenha) {
    this.confirmaSenha = confirmaSenha;
}

public boolean isStatusNovo() {
    return statusNovo;
}

public void setStatusNovo(boolean statusNovo) {
    this.statusNovo = statusNovo;
}

public boolean isStatusSalvar() {
    return statusSalvar;
}

public void setStatusSalvar(boolean statusSalvar) {
    this.statusSalvar = statusSalvar;
}

public boolean isStatusPesquisar() {
    return statusPesquisar;
}

public void setStatusPesquisar(boolean statusPesquisar) {
    this.statusPesquisar = statusPesquisar;
}

public boolean isStatusCancelar() {
    return statusCancelar;
}

public void setStatusCancelar(boolean statusCancelar) {
    this.statusCancelar = statusCancelar;
}

public List<Usuario> getUsuariosDe() {
    return usuariosDe;
}

public void setUsuariosDe(List<Usuario> usuariosDe) {
    this.usuariosDe = usuariosDe;
}

public List<Usuario> getUsuariosPara() {
    return usuariosPara;
}

public void setUsuariosPara(List<Usuario> usuariosPara) {
    this.usuariosPara = usuariosPara;
}

public int getUsuarioDe() {
    return usuarioDe;
}

public void setUsuarioDe(int usuarioDe) {
    this.usuarioDe = usuarioDe;
}

public int getUsuarioPara() {
    return usuarioPara;
}

public void setUsuarioPara(int usuarioPara) {
    this.usuarioPara = usuarioPara;
}

public List<Sistema> getSistemas() {
    return sistemas;
}

public void setSistemas(List<Sistema> sistemas) {
    this.sistemas = sistemas;
}

public String getConteudoPesquisa() {
    return conteudoPesquisa;
}

public void setConteudoPesquisa(String conteudoPesquisa) {
    this.conteudoPesquisa = conteudoPesquisa;
}

public boolean isShowDialog() {
    return showDialog;
}

public void setShowDialog(boolean showDialog) {
    this.showDialog = showDialog;
}

public List<DepartamentoProjetos> getDpProjetos() {
    return dpProjetos;
}

public void setDpProjetos(List<DepartamentoProjetos> dpProjetos) {
    this.dpProjetos = dpProjetos;
}

Erro no console
11-Apr-2018 10:02:11.875 SEVERE [http-nio-8084-exec-125] com.sun.faces.context.AjaxExceptionHandlerImpl.handlePartialResponseError javax.el.PropertyNotFoundException: /restrito/cadUsuario.xhtml @280,129 value="#{usuarioMB.usuario.departamentoProjetos.id}": Target Unreachable, ‘departamentoProjetos’ returned null
Caused by: javax.el.PropertyNotFoundException: Target Unreachable, ‘departamentoProjetos’ returned null

10 Respostas

D

Quando você instancia o managedBean (como é viewscoped, cada vez que carrega a view), você seta o departamentoProjetos do usuario.
Por alguma razão, depois que o método salvar é executado, você tem um novo usuario, mas não seta o departamentoProjetos dele. Daí é que vem a exceção que está recebendo.

M

Então @darlan_machado (Por alguma razão, depois que o método salvar é executado, você tem um novo usuário, mas não seta o departamentoProjetos dele). Quando eu clico no botão novo do meu form ele cria um novo usuário eu já setei ele nesse método só que quando eu faço isso começa a duplicar os meus registro.

D

Como assim, duplica registros? Se isso acontece, é por você chamar duas vezes o método que persiste.

M

Nesse método
public void novo() {

this.usuario = new Usuario();
    this.confirmaEmail = "";
    this.confirmaSenha = "";
    this.usuariosPesquisados = new ArrayList<Usuario>();
    this.permissoes = new ArrayList<Permissao>();
    this.usuario.setDepartamentoProjetos(new DepartamentoProjetos());
    this.isNovo = true;
    this.statusNovo = true;
    this.statusSalvar = false;
    this.statusPesquisar = true;
    this.statusCancelar = false;
    this.somenteLeitura = false;

}

Quando eu faço assim da certo ele traz os campos naquela imagem de cima mas começa a duplicar os campos em na tabela que eu tenho no form.

Ai essa parte é por você chamar duas vezes o método que persiste eu não consegui identificar a onde estou errado já debuguei mas não estou conseguindo.

M

@darlan_machado Você pode me dar uma ajuda nessa questão de duplicar os registro já faz uma semana que eu estou tentando resolver isso, estou bem perdido.

D

Os registros duplicados estão na tabela, apenas?

M

Não, está no banco também.

D

O que está ocorrendo é que, por alguma razão, o evento que dispara o método salvar está sendo executado em duplicidade.

M

Eu não olhei o código, mas os métodos getters e setters podem ser chamado diversas vezes durante o ciclo de vida, um atras do outros.

Da uma checada…

M

Bom dano um retorno aqui no post depois de quebrar muito a cabeça consegui resolver,tinha uma variável global no código que não esta funcionando de direito, essa variável estava fazendo o seguinte se o registro e novo ele deve ser inserido no banco de dados, eu tirei essa variável e mudei na procedure a rotina e usei pelo id se existir o id ele atualiza se não existir o id ele grava.

Criado 11 de abril de 2018
Ultima resposta 15 de abr. de 2018
Respostas 10
Participantes 3