【发布时间】:2013-07-28 20:24:39
【问题描述】:
spring.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="meassageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
<property name="basename" value="resource\message">
</property>
</bean>
</beans>
Main.java 类文件
public class Main {
public static void main(String[] args) {
ApplicationContext context= new ClassPathXmlApplicationContext("spring.xml");
System.out.println(context.getMessage("emp", null, Locale.US));
}
}
我的属性文件位于 src/resource 文件夹中。文件名为 mesaage_en_US.properties。 我也尝试过使用不同的文件名,如 message.property、message_en.property 和不同的语言环境,如 Locale.English、Locale.UK,但没有运气。 我将属性文件移动到 src 文件夹,但得到了同样的异常。 我收到以下异常。
Exception in thread "main" org.springframework.context.NoSuchMessageException: No message found under code 'emp' for locale 'en_US'.
at org.springframework.context.support.DelegatingMessageSource.getMessage(DelegatingMessageSource.java:65)
at org.springframework.context.support.AbstractApplicationContext.getMessage(AbstractApplicationContext.java:1234)
at org.beans.Main.main(Main.java:14)
请帮忙。
message_en_US.properties
emp=Hello Employee.
【问题讨论】:
-
听起来你的
ApplicationContext没有自动检测你的MessageSource。 bean 名称中有一个错字 - 在您的实际代码中是这样吗? -
类路径属性应该用正斜杠分隔,所以试试资源/消息。
-
@superEb 实际代码没有错别字。
-
您尝试过@samlewis 的建议吗?另外,如果您通过调用
ApplicationContext.getBean然后调用getMessage来直接访问messageSourcebean 会怎样?