【发布时间】:2018-11-19 20:01:53
【问题描述】:
在我的 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'.?
谁能给点建议?
【问题讨论】:
-
该消息是关于键“name.required”的。它与密钥“invalidAdminPassword”无关。阅读消息会有所帮助。读取异常的堆栈跟踪也有帮助。
-
我已在问题中更正了这一点。谢谢。
-
如果您同时拥有“messages.properties”和“massages_en_GB.properties”,则无需引用本地化的基本名称。只需一个简单的 setBasename("messages") 就可以了。 (可以在这里找到很好的例子:baeldung.com/spring-boot-internationalization)
标签: java spring spring-boot message properties-file