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 =(