Я не могу установить переменную из пользовательского сообщения ValidationMessages.properties - PullRequest
0 голосов
/ 22 мая 2019

Я использую 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, так что я понял это из видеоуроки и действительно не знаю, что является причиной этой проблемы.

Что ж, спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...