我正在学习使用资源包在我的项目中打印与语言环境相关的消息。
application.xml中:
<bean class="org.springframework.context.support.ResourceBundleMessageSource">
<property name="basename" value="ru.bpc.svat.svnr.integration.banking.messages" />
</bean>
<bean class="ru.bpc.svat.svnr.integration.banking.application.SpringContextMessageFactory" />
目录src \ main \ resources \ ru \ bpc \ svat \ svnr \ integration \ banking包含文件:
messages.properties
messages_ru.properties
messages_ru_RU.properties
每个都有一行:
test = testmessage
在我的测试类中,我获得了一个消息工厂的实例并尝试获取消息:
@Autowired private MessageFactory messageFactory;
...
messageFactory.getMessage("test", new Object[]{}, Locale.getDefault());
然后我得到一个例外:
No message found under code 'test' for locale 'ru_RU'.
它有什么问题?这可能是一个愚蠢的问题,但这是我的第一次经历。谢谢你的回答。
答案 0 :(得分:1)
<bean id="messageSource"
class="org.springframework.context.support.ResourceBundleMessageSource">
<property name="basename">
<value>locale\customer\messages</value>
</property>
</bean>
</beans>
最后使用SpringContext context.getMessage()方法读取你的值。
注意:假设您的属性文件位于“resources \ locale \ customer \”文件夹中。如上面的值标记中所述。 基本上这些文件需要在项目的类路径中。
如果它能解决您的问题,请告诉我,然后接受我的回答!
答案 1 :(得分:0)
如果你将文件直接放入src / main / resources(&amp;不在src / main / resources的子目录中)怎么办?只是一个想法。通常情况下,它应该能够找到文件,如果它在classpath上。
答案 2 :(得分:0)
尝试替换:
<bean class="org.springframework.context.support.ResourceBundleMessageSource">
<property name="basename" value="ru.bpc.svat.svnr.integration.banking.messages" />
</bean>
on
<bean class="org.springframework.context.support.ResourceBundleMessageSource">
<property name="basename" value="ru\bpc\svat\svnr\integration\banking\messages" />
</bean>
确保您的班级相对路径。在其他情况下,将资源放在src / main / resources中并使用classpath:\ suffix