Bom dia, estou fazendo o projeto final da formação Java e estou com problema na etapa 4, na hora de carregar os dados do usuário para alterar as permissões dele, tudo começa na table que tem a listagem de usuários:
<table class="table table-bordered table-striped table-hover">
<tr>
<th>Nome</th>
<th>E-mail</th>
<th>Roles</th>
<th></th>
</tr>
<c:forEach items="${usuarios}" var="usuario">
<tr>
<td>${usuario.nome}</td>
<td>${usuario.email}</td>
<td>${usuario.roles}</td>
<td><a href="${s:mvcUrl('UC#permissoes').arg(0, usuario.email).build()}"><img src="images/add.png"></a></td>
</tr>
</c:forEach>
</table>
Ao clicar para ir nas permissões do usuário, vai para o controller:
@RequestMapping(value = "/detalhe/{email}")
public ModelAndView permissoes(@PathVariable("email") String email) {
Usuario usuario = repository.findByEmail(email);
ModelAndView modelAndView = new ModelAndView("/usuarios/roles");
modelAndView.addObject("usuario", usuario);
return modelAndView;
}
Porém acontece o seguinte erro:
2018-08-10 04:48:33.858 WARN 7868 --- [nio-8080-exec-6] .m.m.a.ExceptionHandlerExceptionResolver : Resolved exception caused by Handler execution: java.lang.IllegalStateException: Invalid target for Validator [br.com.casadocodigo.validator.UsuarioValidation@26f884f7]: br.com.casadocodigo.models.Usuario@4ff42abd
Hibernate: select usuario0_.email as email1_3_, usuario0_.nome as nome2_3_, usuario0_.senha as senha3_3_ from usuario usuario0_ where usuario0_.email=?
Hibernate: select roles0_.usuario_email as usuario_1_4_0_, roles0_.roles_nome as roles_no2_4_0_, role1_.nome as nome1_2_1_ from usuario_roles roles0_ inner join role role1_ on roles0_.roles_nome=role1_.nome where roles0_.usuario_email=?
java.lang.IllegalStateException: Invalid target for Validator [br.com.casadocodigo.validator.UsuarioValidation@3fffe13e]: br.com.casadocodigo.models.Usuario@45158eb2
at org.springframework.validation.DataBinder.assertValidators(DataBinder.java:541)
at org.springframework.validation.DataBinder.setValidator(DataBinder.java:530)
at br.com.casadocodigo.controllers.UsuarioController.InitBinder(UsuarioController.java:39)
Ele indica que o erro aconteceu na linha 39, que é da parte que eu declaro o validator:
@InitBinder
public void InitBinder(WebDataBinder binder) {
binder.setValidator(new UsuarioValidation());
}
Gostaria de saber o porque desse erro?, já que a validação não é utilizada para a classe Usuario.
Obrigado!