o retorno da validação vem uma lista vazia em vez do "campo" e "erro". fiz um teste e o controller chama o handle quando da 404, mas não consegui fazer com que trouxesse os campos.
meus códigos:
@RestControllerAdvice
public class ErrodeValidacaoHandler {
@Autowired
private MessageSource messageSource;
@ResponseStatus(code = HttpStatus.BAD_REQUEST)
@ExceptionHandler(BindException.class)
public List<ErroDeFormularioDTO> handle(BindException exception) {
List<ErroDeFormularioDTO> dto = new ArrayList<>();
List<FieldError> fieldErrors = exception.getBindingResult().getFieldErrors();
fieldErrors.forEach(e -> {
String mensagem = messageSource.getMessage(e, LocaleContextHolder.getLocale());
ErroDeFormularioDTO erro = new ErroDeFormularioDTO(e.getField(), mensagem);
});
return dto;
}
}
public class ErroDeFormularioDTO {
private String campo;
private String erro;
public ErroDeFormularioDTO(String campo, String erro) {
this.campo = campo;
this.erro = erro;
}
public String getCampo() {
return campo;
}
public String getErro() {
return erro;
}
}