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