Black November

ATÉ 50% OFF

TÁ ACABANDO!

0 dias

0 horas

0 min

0 seg

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

Exception ao passar valor inválido no parâmetro do Postman

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;
}

Matricule-se agora e aproveite até 50% OFF

O maior desconto do ano para você evoluir com a maior escola de tecnologia

QUERO APROVEITAR
1 resposta
solução!

Consegui implementar, atualizei o código do post anterior, caso alguém precise. Até +