Spring 引导应用程序给出消息 未找到区域设置的消息 'en_GB'
Spring Boot application giving message No message found for locale 'en_GB'
在我的 Spring 引导应用程序中,我收到消息: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 引导默认设置,为什么我会收到消息 org.springframework.context.NoSuchMessageException: No message found under code 'invalidAdminPassword' for locale 'en_GB'.
?
有人可以指点一下吗?
tl;dr:link 中有一个最小的 运行 示例。
解决您的问题,请回答,请详细说明:
a) 你把你的 messages.properties 放在哪里了?
b) 是否有多个消息{.*}.properties?
有可能的错误可以检查。
- 如果消息源文件在定义的位置。
- 请求的语言环境是否有消息源文件。
- 是否定义了一个名为 "messageSource".
的 bean
如果使用 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
的bean
在我的 Spring 引导应用程序中,我收到消息: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 引导默认设置,为什么我会收到消息 org.springframework.context.NoSuchMessageException: No message found under code 'invalidAdminPassword' for locale 'en_GB'.
?
有人可以指点一下吗?
tl;dr:link 中有一个最小的 运行 示例。
解决您的问题,请回答,请详细说明:
a) 你把你的 messages.properties 放在哪里了?
b) 是否有多个消息{.*}.properties?
有可能的错误可以检查。
- 如果消息源文件在定义的位置。
- 请求的语言环境是否有消息源文件。
- 是否定义了一个名为 "messageSource". 的 bean
如果使用 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