Как исправить «parentMessageSource of the messageSourceBean», чтобы он не всегда был нулевым - PullRequest
0 голосов
/ 08 февраля 2019

Я создаю API с пружинной загрузкой с настраиваемыми сообщениями проверки и всегда получаю org.springframework.context.NoSuchMessageException: не найдено сообщение под кодом «name.of.my.message» для локали «en_US»' исключение, когда я пытаюсь получить сообщения из файла messages.properties .

Сначала я подумал, что это из-за локали, поэтому я попытался получить свой собственный LocaleResolver @ Bean , чтобы установить для языка по умолчанию значение US и изменить имя файла messages.properties на messages_en_us.properties, но это не устранило проблему.

Наконец-то я подумал, что это может быть из-за объект messageSource и я думаю, что был прав.Когда я отладил, я увидел, что объект messageSource имеет parentMessageSource в нуле, и когда я вошел в метод getMessage () , я увидел, что если Аргумент parentMessageSource равен нулю, и будет выдано исключение NoSuchMessageException .Я не нахожу много об этой конкретной проблеме, поэтому я задаю этот вопрос здесь.

Это мой код в application.java (пока я не заставлю его работать):

@Bean
public MessageSource messageSource() {

    ResourceBundleMessageSource messageSource = new 
        ResourceBundleMessageSource ();

    messageSource.setBasename("classpath:messages");
    messageSource.setDefaultEncoding("UTF-8");
    return messageSource;
}   

@Bean
public LocalValidatorFactoryBean validator(MessageSource messageSource) {
    LocalValidatorFactoryBean bean = new LocalValidatorFactoryBean();
    bean.setValidationMessageSource(messageSource());
    return bean;
}

messages.properties:

user.firstName.NotNull=First name must not be null.

Из всех прочитанных мною учебников это только то, что мне нужно для получения моих проверочных сообщений, но из-за нулевого parentMessageSource это невозможно, даже если остальныемоего кода кажется нормальным.

1 Ответ

0 голосов
/ 11 февраля 2019

Ну, я нашел решение.

Это было довольно просто на самом деле.Мое собственное недопонимание загрузки Spring в этом виновато.В основном, в моем тестовом классе мне нужно добавить аннотации @ConfigurationContext (classes = Application.java, MyCustomValidationConfig.java), и это сработало!Спасибо всем, кто посмотрел.Теперь мне просто нужно разобраться с тестом @valid!

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