Olá pessoal! Meu projeto está lançando uma exception "HttpMessageNotReadableException" quando passo um tipo de dado inválido no Postman, por exemplo, nome de usuário espera uma String e o usuário passa digito ou algum caractere especial. Para resolver essa exception é necessário implementar o handler chamado handleHttpMessageNotReadable, mas seguindo a mesma ideia da aula, não consegui pegar os campos e os erros usando o ex.getBindingResult(), ele tem outros parâmetros.
@Override
protected ResponseEntity<Object> handleHttpMessageNotReadable(HttpMessageNotReadableException ex,
HttpHeaders headers, HttpStatus status, WebRequest request) {
List<Campo> listaCampos = new ArrayList<Campo>();
String nomeDoCampo = "";
String mensagemErro = "";
Integer statusErro = status.value();
LocalDateTime dataHora = LocalDateTime.now();
String titulo = "";
JsonMappingException e = (JsonMappingException) ex.getCause();
for (JsonMappingException.Reference reference : e.getPath()) {
nomeDoCampo = reference.getFieldName();
titulo = "O campo " + nomeDoCampo + " é inválido.";
mensagemErro = e.getMessage();
listaCampos.add(new Campo(nomeDoCampo, mensagemErro));
}
Erro erro = new Erro(statusErro, dataHora, titulo, listaCampos);
return new ResponseEntity<Object>(erro, headers, status);
}
class Campo {
private String campo;
private String mensagem;
}
public class Erro {
private Integer status;
private LocalDateTime dataHora;
private String titulo;
private List<Campo> campo;
}