我是春天的新手,现在我正在尝试使用aplicationContext进行I18N流程。我正在使用maven模块化项目。我的项目包含以下子模块:
模型 - 对myApp 服务,对myApp Web应用程序-对myApp
services-MyApp
src/main/java
src/main/resources
在services-myApp资源文件夹中,我使用消息源
声明了应用程序上下文<!-- Need to I18N -->
<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
<property name="basename" value="WEB-INF/lang/myFile"/>
</bean>
在webApp中,我有I18N所需的文件
web应用-MyApp的 的src /主/ web应用/ WEB-INF /郎/ myFile_it_IT.properties
现在,当我试图收到消息时:
String message = applicationContext.getMessage("myCode", null,null, Locale.ITALY);
我改为
WARN ResourceBundleMessageSource - 找不到MessageSource的ResourceBundle [/ WEB-INF / lang / myFile]:无法找到基本名称/ WEB-INF / lang / myFile,locale it_IT
的包
,消息为空。如果我在webApp类路径(/ src / main / resources)中移动文件并将messageSource的值更改为 myFile ,一切正常。
我该如何解决?
答案 0 :(得分:2)
尝试使用ReloadableResourceBundleMessageSource而不是ResourceBundleMessageSource。它将在WEB-INF下查找文件。
答案 1 :(得分:1)
目前,我正在学习Spring启动,本地化配置花了我一些时间才能让它正常工作。
特别是找到属性文件的正确位置是个问题。将它们放在src/main/resources/
中很好,因为很容易设置对该位置的引用。 (见要点)
了解ResourceBundleMessageSource
中的基名自动相对于资源路径也很重要。
如果您想使用基于配置注释而不是XML。请查看我的Gist以获取示例配置。