Приложение Spring Boot выдает сообщение. Не найдено сообщений для локали en_GB. - PullRequest
0 голосов
/ 10 июня 2018

В моем приложении Spring Boot я получаю сообщение: org.springframework.context.NoSuchMessageException: No message found under code 'invalidAdminPassword' for locale 'en_GB'.

Я знаю, что это связано с объектом MessageSource, который в моем коде определен как:

@Bean
    public ReloadableResourceBundleMessageSource messageSource() {
        ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource();
        Locale.setDefault(Locale.UK);
        messageSource.setBasename("messages_en_GB");
        messageSource.setCacheSeconds(3600); // Refresh cache once per hour.
        return messageSource;
    }

В messages_en_GB.properties у меня есть сообщение:

# Other validation messages.
invalidAdminPassword=Invalid password.

А в соответствующем контроллере у меня есть:

System.out.println(messageSource.getMessage("invalidAdminPassword", null, Locale.UK));

Просто для проверки извлечения из файла messages_en_GB.properties.

Я полагаю, что я использую настройки Spring Boot по умолчанию, так почему я получаю сообщение org.springframework.context.NoSuchMessageException: No message found under code 'invalidAdminPassword' for locale 'en_GB'.?

Может кто-нибудь посоветовать?

Ответы [ 2 ]

0 голосов
/ 31 августа 2019

Возможны ошибки, которые можно проверить.

  1. Если исходные файлы сообщений находятся в определенном месте.
  2. Есть ли какой-либо исходный файл сообщения для запрошенной локали.
  3. Определен bean-компонент с именем "messageSource".

Если используется конфигурация java, он должен выглядеть следующим образом:

@Bean
public MessageSource messageSource() {
     ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource();
     messageSource.setBasename("/WEB-INF/messages");
}

Здесь наш файл сообщений должен находиться внутри WEB-INF как определено.

или

@Bean(name="messageSource")
public MessageSource setUpmessageSource() {}

Если мы определим только

public MessageSource setUpmessageSource() {}

, то не будет никакого компонента с именем messageSource

0 голосов
/ 10 июня 2018

tl; dr: минимальный пример выполнения в ссылке .

Чтобы решить вашу проблему, пожалуйста, ответьте, пожалуйста, дайте более подробную информацию:

a) Где вы положили свои messages.properties?

b) Есть ли более одного свойства {. *}. Свойств?

...