Я использую SpringBoot с JPA, и у меня следующее сообщение:
javax.validation.constraints.NotNull.message={0} \u00e9 obrigat\u00f3rio(a)
И у меня есть мой класс ExceptionHandler, который аннотирован @ControllerAdvice и имеет следующие методы:
@Override
protected ResponseEntity<Object> handleMethodArgumentNotValid(MethodArgumentNotValidException ex,
HttpHeaders headers, HttpStatus status, WebRequest request) {
List<Erro> erros = criarListaDeErros(ex.getBindingResult());
return handleExceptionInternal(ex, erros, headers, HttpStatus.BAD_REQUEST, request);
}
private List<Erro> criarListaDeErros(BindingResult bindingResult) {
List<Erro> erros = new ArrayList<>();
for (FieldError fieldError : bindingResult.getFieldErrors()) {
String mensagemUsuario = messageSource.getMessage(fieldError, LocaleContextHolder.getLocale());
String mensagemDesenvolvedor = fieldError.toString();
erros.add(new Erro(mensagemUsuario, mensagemDesenvolvedor));
}
return erros;
}
public static class Erro {
private String mensagemUsuario;
private String mensagemDesenvolvedor;
public Erro(String mensagemUsuario, String mensagemDesenvolvedor) {
this.mensagemUsuario = mensagemUsuario;
this.mensagemDesenvolvedor = mensagemDesenvolvedor;
}
public String getMensagemUsuario() {
return mensagemUsuario;
}
public String getMensagemDesenvolvedor() {
return mensagemDesenvolvedor;
}
}
У меня проблема, когда возникает исключение.Мой обработчик может получить сообщение от ValidationMessages.properties, хотя он не заменяет {0} для имени атрибута (атрибут помечен @NotNull), поэтому я получаю это сообщение:
{
"mensagemUsuario": "{0} é obrigatório(a)",
"mensagemDesenvolvedor": "Field error in object 'categoria' on field 'nome': rejected value [null]; codes [NotNull.categoria.nome,NotNull.nome,NotNull.java.lang.String,NotNull]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [categoria.nome,nome]; arguments []; default message [nome]]; default message [{0} é obrigatório(a)]"
}
К сожалению, я изучаю SpringBoot, так что я понял это из видеоуроки и действительно не знаю, что является причиной этой проблемы.
Что ж, спасибо.