spring mvc中,如何在 Java 代码里,获取 国际化 内容

java

首先,在Spring的application.xml中定义

 <bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">

<!-- 国际化信息所在的文件名 -->

<property name="basename" value="messages/messages"/>

<!-- 如果在国际化资源文件中找不到对应代码的信息,就用这个代码作为名称 -->

<property name="useCodeAsDefaultMessage" value="true"/>

</bean>

其中,id 的值必须是 “messageSource”,否则会报错

首先,我想到的是,既然它是一个被声明好的bean,那么,应该可以使用 @Autowired 标签来绑定吧。于是我写了如下的代码:

public class Const {  

@Autowired

private static ResourceBundleMessageSource rms

public static String getTextValue(String key) {

return rms.getMessage(key, null, null);

}

}

rms 的值一直是null,也就是说注入失败了

后来在网上查到,“ApplicationContext” 这个接口继承了“MessageSource”接口,那么我们只要获取项目的 ApplicationContext 的实现类,就可以通过 getMessage() 方法来获取国际化文件内容了。

那么要如何简单方便的来获取 ApplicationContext 的实现类呢?这个时候就需要另一个接口了,即“ApplicationContextAware”,任何类实现这个接口,均会被注入  ApplicationContext 。

public class SpringUtil implements ApplicationContextAware {  

private static ApplicationContext applicationContext;

public static ApplicationContext getApplicationContext() {

return applicationContext;

}

@Override

public void setApplicationContext(ApplicationContext arg0) throws BeansException {

applicationContext = arg0;

}

public static Object getBean(String id) {

Object object = null;

object = applicationContext.getBean(id);

return object;

}

}

当然,必须要将上面的 SpringUtil 类在application.xml文件中配置一下,才能让它被spring框架读取,然后给它注入 ApplicationContext。配置很简单:

<bean id="SpringUtil" class="util.SpringUtil"/>  

这样就行了

public class Const {  

public static String getTextValue(String key) {

return SpringUtil.getApplicationContext().getMessage(key, null, null);

}

}

以上是 spring mvc中,如何在 Java 代码里,获取 国际化 内容 的全部内容, 来源链接: utcz.com/z/394471.html

回到顶部