的applicationContext-service.xml中
<bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
<property name="basenames">
<list><value>messages</value></list>
</property>
</bean>
我在/src/messages_en_US.properties下有messages_en_US.properties
registerForm.passwordNotMatch=Password does not match.
这段代码正在提出错误:
binding.addError(new FieldError(REGISTER_FORM, "passwordNotMatch", messageSource.getMessage("registerForm.passwordNotMatch", null, locale)));
错误:在代码'registerForm.passwordNotMatch'下找不到区域设置'en_US'的消息。
可能出现什么问题?
答案 0 :(得分:12)
如果您改为:
,它是否有效classpath:messages
我有经验,如果使用ReloadableResourceBundleMessageSource
,在jsp中将找不到属性文件。在classpath:
之前添加basename
解决了我的问题。
即使我的项目由maven管理,我想你无论如何都可以尝试一下。
答案 1 :(得分:0)
我有同样的问题。我试过classpath:
,但没有什么区别。结束在我的属性文件的最后一行放入回车符(因此光标位于下一行,即文件的末尾)。
此外,如果您正在使用Maven,并且将属性文件放置为/resources/xxxx.properties
,则资源目录会自动拉入生成的战争中,因此不需要classpath:
。
答案 2 :(得分:0)
对于使用@Bean
的{{1}}注释的用户。
为bundleMessageSource
添加名称。
name =“ messageSource”
使用与创建@Bean
类中的MessageSource
对象相同的名称
@RestController
然后在@RestController
public class HelloWorldController {
@Autowired
private MessageSource messageSource;
@GetMapping(path = "/hello-world-internationalized")
public String helloWorldInternationalized(@RequestHeader(name = "Accept-Language", required = false) Locale locale) {
return messageSource.getMessage("good.morning.message", null, locale);
}
}
类
@SpringBootApplication
答案 3 :(得分:-2)
我认为应该是<property name="basenames">
而不是<property name="basename">
。