Spring Boot应用程序发出消息未找到locale'en_GB'的消息

时间:2018-06-10 11:02:29

标签: java spring spring-boot message properties-file

在我的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 :(得分:1)

tl; dr:link中有一个最小的运行示例。

要解决您的问题,请回答,请提供更多详情:

a)你把你的messages.properties放在哪里?

b)是否有多​​条消息{。*}。属性?

答案 1 :(得分:0)

有可能的错误可以检查。

  1. 如果消息源文件位于定义的位置。
  2. 请求的语言环境是否有任何消息源文件。
  3. 是否已定义一个名为“ messageSource”的bean。

如果使用Java配置,则必须类似于

    - "traefik.frontend.rule=Host:example.com"

在此,我们的消息文件应位于定义的WEB-INF中。

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

如果仅定义

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

然后没有名为public MessageSource setUpmessageSource() {} 的bean