SpringMVC中MessageSource的获取方法
有时候需要在controller中获取message信息,有三种方法可以获得MessageSource。
// 资源文件ApplicationResources.properties放在src目录下,也就是classes目录
// 配置文件messages.xml也放在src目录下,也就是classes目录
// 第一种方法
MessageSource resources = new ClassPathXmlApplicationContext("messages.xml");
String msg = resources.getMessage("XXXXX", new String[] { "OOOOO" }, null);
// 第二种方法
ReloadableResourceBundleMessageSource messageSource;
messageSource = new ReloadableResourceBundleMessageSource();
messageSource.setBasename("classpath:/ApplicationResources");
messageSource.setUseCodeAsDefaultMessage(true);
msg = messageSource.getMessage("XXXXX", new String[] { "OOOOO" }, Locale.CHINA);
// 第三种方法
WebApplicationContext wac = RequestContextUtils.getWebApplicationContext(request);
msg = wac.getMessage("XXXXX", new String[] { "OOOOO" }, Locale.CHINA);
messages.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-2.5.xsd">
<bean id="messageSource"
class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
<property name="basenames">
<list>
<value>ApplicationResources</value>
</list>
</property>
<property name="useCodeAsDefaultMessage" value="false" />
<property name="defaultEncoding" value="UTF-8" />
<property name="cacheSeconds" value="60" />
</bean>
</beans>
PS:第三种方法messageSource Bean是配置在spring-servlet.xml中的。