Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

NullPointerException ao tentar validar o email

Olá! Apesar de já ter encontrado um jeito de contornar e fazer a validação aqui, gostaria de manter a responsabilidade na própria classe de validação, pensando em boas práticas.

O problema é o mesmo, ao tentar fazer a comparação com o que eu já tenho persistido no BD, recebo um NullPointerException.

Usuario usuario = (Usuario) target;
System.out.println(usuario.getEmail());
if(dao.existe(usuario)) {
  errors.rejectValue("email", "usuario.existe");
}

Fiz o sysout do usuario.getEmail() para ter certeza que usuario não era nulo. Inicialmente, eu tinha esquecido de anotar a criação do dao nessa classe com @Autowired, mas agora isso já foi corrigido. Eu recebo o seguinte no console:

vinicius@casadocodigo.com.br
Erro genérico acontecendo
java.lang.NullPointerException
at br.com.casadocodigo.loja.validation.UsuarioValidation.validate(UsuarioValidation.java:30)

Ou seja, o meu NPE vem do dao, eu imagino. Como corrigir isso se o Spring deveria estar instanciando-o pra mim?

  • o NPE vem da linha if(dao.existe(usuario)) {

O método que faz a comparação é o seguinte:

  public Boolean existe(Usuario usuario) {
    List<Usuario> usuarios = listar();

    for (Usuario usuarioAux : usuarios) {
      if (usuarioAux.equals(usuario)) {
        return true;
      }
    }
    return false;
  }

Pelo que eu encontrei aqui, eu precisaria inserir meu validator no ComponentScan (ou foi isso que entendi, pelo menos), mas não adiantou =(

1 resposta
solução!

dei uma procurada do no google e encontrei vários resultados, sendo um daqui do fórum mesmo. Consegui resolver esse problema, a solução está aqui