我目前正在使用以下代码,该代码运行正常:
<bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
<property name="basenames">
<list>
<value>/WEB-INF/resources/lang/lang</value>
</list>
</property>
<property name="defaultEncoding" value="UTF-8"/>
</bean>
当我将 ReloadableResourceBundleMessageSource 更改为 ResourceBundleMessageSource 时,它停止工作。
<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
<property name="basename" value="/WEB-INF/resources/lang/lang" />
</bean>
我不断收到异常消息“在语言环境‘en_US’的代码‘标题’下找不到消息。” (标题为示例)
在阅读类似的问题后,我也尝试将 basename 参数的值更改为以下任意值,但没有成功:
WEB-INF/资源/lang/lang
.WEB-INF.resources.lang.lang
WEB-INF.resources.lang.lang
resources.lang.lang
lang.lang
郎
类路径:resources.lang.lang
创建一个名为 lang_en_US.properties 的文件也没有帮助。
最佳答案
显然,它正在查找 java 文件夹(类路径的根目录)而不是 web 文件夹。
我在 java 文件夹中创建了一个名为 lang 的新包,并将 lang*.properties 文件移至其中。
然后我将 lang.lang 作为基本名称的值,它开始工作。
更新:项目清理后停止工作。 lang 文件应该进入“resources”文件夹,而不是 java 文件夹。从技术上讲,它们在构建后最终出现在同一个位置,但 IDE 似乎会忽略 java 文件夹中的非类文件并简单地跳过它们。
关于java - 无法使用 ResourceBundleMessageSource 查找消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46900189/