Java 给出消息的Spring启动应用程序未找到区域设置的消息';en#U GB';
在我的Spring Boot应用程序中,我收到一条消息:Java 给出消息的Spring启动应用程序未找到区域设置的消息';en#U GB';,java,spring,spring-boot,message,properties-file,Java,Spring,Spring Boot,Message,Properties File,在我的Spring Boot应用程序中,我收到一条消息:org.springframework.context.NoSuchMessageException:在区域设置“en_GB”的代码“invalidAdminPassword”下找不到消息。 我知道这是由于MessageSource对象造成的,在我的代码中,该对象被定义为: @Bean public ReloadableResourceBundleMessageSource messageSource() { Rel
org.springframework.context.NoSuchMessageException:在区域设置“en_GB”的代码“invalidAdminPassword”下找不到消息。
我知道这是由于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\u en\u GB.properties
中,我有一条消息:
# Other validation messages.
invalidAdminPassword=Invalid password.
在有关控制员中,我有:
System.out.println(messageSource.getMessage("invalidAdminPassword", null, Locale.UK));
只需测试从messages\u en_GB.properties
文件中的检索
我相信我使用的是Spring引导默认设置,那么为什么我会收到消息org.springframework.context.NoSuchMessageException:在区域设置“en_GB”的代码“invalidAdminPassword”下找不到消息。
有人能提供建议吗?tl;dr:在这个示例中,有一个最小的运行示例 要解决您的问题,请回答,请提供更多详细信息: a) 你把你的信息放在哪里了
b) 是否有多条消息{.*}.properties?可以检查可能的错误
@Bean
public MessageSource messageSource() {
ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource();
messageSource.setBasename("/WEB-INF/messages");
}
这里,我们的消息文件应该位于定义的WEB-INF中
或
如果我们只定义
public MessageSource setUpmessageSource() {}
然后没有名为
messageSource
的bean,消息是关于键“name.required”的。它与关键字“invalidAdminPassword”无关。阅读信息会有所帮助。阅读异常的堆栈跟踪也有帮助。我在问题中已经纠正了这一点。谢谢。如果您同时拥有“messages.properties”和“massages_en_GB.properties”,则无需引用本地化的基本名称。只要一个简单的挫折名称(“消息”)就可以了。(这里有一个很好的例子:)a。文件message\u en\u GB.properties
位于文件夹src/main/resources
中。B只有一个消息文件。很高兴听到。实际问题是什么?我把en_GB
和UK
的LOCALE
设置搞混了。最后,根据您在GitHub上的演示,我只是简单地使用了US
。只有filename对我不起作用,我不知道为什么?但我们通过在basename中添加classpath:filename解决了这个问题。它工作正常,我可以在配置中添加n个属性文件等。messageSource.setBasenames(“classpath:messages1”,“类路径:messages2”);
public MessageSource setUpmessageSource() {}