Spring MVC国际化
2012-10-21 13:20
295 查看
本文基于Spring MVC 注解-让Spring跑起来。本文提到的国际化是Spring实现国际化的方案之一。
(1) 在applicationContext.xml中添加以下配置信息:
[java] view
plaincopy
<!-- 国际化配置 -->
<bean id="messageSource"
class="org.springframework.context.support.ResourceBundleMessageSource">
<property name="basename" value="messages.messages" />
</bean>
上述代码中提到的messages.messages中,前一个messages是src下的一个文件夹,后一个messages是所有以messages开头的,以properties结尾的文件,如messages_zh_CN.properties或messages_en.properties,这些文件即是配置国际化信息的文件,其信息分别如下:
[java] view
plaincopy
#message_en.properties
main.title=RUI manage system
[java] view
plaincopy
#message_zh_CN.properties
main.title=RUI管理系统
(2) 在dispatcher.xml中添加以下配置信息
[java] view
plaincopy
<!-- 国际化配置 -->
<bean id="localeResolver" class="org.springframework.web.servlet.i18n.SessionLocaleResolver" />
并添加拦截器配置:
[java] view
plaincopy
<mvc:interceptors>
<bean class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor" />
</mvc:interceptors>
(3) 在jsp页面中调用国际化后的信息
[java] view
plaincopy
<fmt:message key="main.title" />
(4) 访问系统,只需要在初次访问系统时,在地址拦上添加"?locale=en"即可访问英文网站。注意,访问系统的第一个页面时添加即可,后绪可不再添加。
本文基于Spring MVC国际化。
在Spring MVC国际化一文中描述了如何实现Spring的国际化,也描述了在jsp页面中如何获取国际化信息,本文描述如何在java代码中获取国际化信息。
在Java代码中,获取国际化信息使用org.springframework.web.context.WebApplicationContext的getMessage方法,getMessage方法中需要使用当前的Locale信息,于是,怎样获取国际化信息集中在以下两点:
1. 如何获取WebApplicationContext?
2. 如何获取当前使用的Locale?
首先,如何获取WebApplicationContext呢,很简单,在任何一个类实现org.springframework.web.context.ServletContextAware并重写其setServletContext方法,如下所示:
[java] view
plaincopy
public class MenuServiceImpl implements MenuService, ServletContextAware {
private ServletContext servletContext;
/*
* (non-Javadoc)
*
* @see
* org.springframework.web.context.ServletContextAware#setServletContext
* (javax.servlet.ServletContext)
*/
@Override
public void setServletContext(ServletContext servletContext) {
this.servletContext = servletContext;
}
public void test() {
WebApplicationContext applicationContext = WebApplicationContextUtils.getRequiredWebApplicationContext(servletContext);
}
}
如此,我们取得了WebApplicationContext信息。
其次,如何获取当前使用的Locale信息?一行代码搞定:
[java] view
plaincopy
Locale locale = RequestContextUtils.getLocaleResolver(request).resolveLocale(request);
WebApplicationContext信息和Locale信息都获取到后,再用一行代码获取国际化信息:
[java] view
plaincopy
String menuName = applicationContext.getMessage("text.menu.name",null, "菜单A", locale);
在getMessage中有四个变量,依次分别为message_*.properties文件中的key,key中{0}、{1}等对应的值,默认值和Locale。
(1) 在applicationContext.xml中添加以下配置信息:
[java] view
plaincopy
<!-- 国际化配置 -->
<bean id="messageSource"
class="org.springframework.context.support.ResourceBundleMessageSource">
<property name="basename" value="messages.messages" />
</bean>
上述代码中提到的messages.messages中,前一个messages是src下的一个文件夹,后一个messages是所有以messages开头的,以properties结尾的文件,如messages_zh_CN.properties或messages_en.properties,这些文件即是配置国际化信息的文件,其信息分别如下:
[java] view
plaincopy
#message_en.properties
main.title=RUI manage system
[java] view
plaincopy
#message_zh_CN.properties
main.title=RUI管理系统
(2) 在dispatcher.xml中添加以下配置信息
[java] view
plaincopy
<!-- 国际化配置 -->
<bean id="localeResolver" class="org.springframework.web.servlet.i18n.SessionLocaleResolver" />
并添加拦截器配置:
[java] view
plaincopy
<mvc:interceptors>
<bean class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor" />
</mvc:interceptors>
(3) 在jsp页面中调用国际化后的信息
[java] view
plaincopy
<fmt:message key="main.title" />
(4) 访问系统,只需要在初次访问系统时,在地址拦上添加"?locale=en"即可访问英文网站。注意,访问系统的第一个页面时添加即可,后绪可不再添加。
本文基于Spring MVC国际化。
在Spring MVC国际化一文中描述了如何实现Spring的国际化,也描述了在jsp页面中如何获取国际化信息,本文描述如何在java代码中获取国际化信息。
在Java代码中,获取国际化信息使用org.springframework.web.context.WebApplicationContext的getMessage方法,getMessage方法中需要使用当前的Locale信息,于是,怎样获取国际化信息集中在以下两点:
1. 如何获取WebApplicationContext?
2. 如何获取当前使用的Locale?
首先,如何获取WebApplicationContext呢,很简单,在任何一个类实现org.springframework.web.context.ServletContextAware并重写其setServletContext方法,如下所示:
[java] view
plaincopy
public class MenuServiceImpl implements MenuService, ServletContextAware {
private ServletContext servletContext;
/*
* (non-Javadoc)
*
* @see
* org.springframework.web.context.ServletContextAware#setServletContext
* (javax.servlet.ServletContext)
*/
@Override
public void setServletContext(ServletContext servletContext) {
this.servletContext = servletContext;
}
public void test() {
WebApplicationContext applicationContext = WebApplicationContextUtils.getRequiredWebApplicationContext(servletContext);
}
}
如此,我们取得了WebApplicationContext信息。
其次,如何获取当前使用的Locale信息?一行代码搞定:
[java] view
plaincopy
Locale locale = RequestContextUtils.getLocaleResolver(request).resolveLocale(request);
WebApplicationContext信息和Locale信息都获取到后,再用一行代码获取国际化信息:
[java] view
plaincopy
String menuName = applicationContext.getMessage("text.menu.name",null, "菜单A", locale);
在getMessage中有四个变量,依次分别为message_*.properties文件中的key,key中{0}、{1}等对应的值,默认值和Locale。
相关文章推荐
- spring mvc 输出 json 异常日志、异常国际化处理
- Spring MVC异常统一处理(异常信息的国际化,日志记录)
- 如何实现 Spring MVC i18n 国际化,动态设置默认语言
- spring mvc结合freemarker,使用hibernate validation框架做校验及国际化
- Spring MVC 1 资源文件 国际化
- Spring mvc的国际化显示
- Spring MVC 1 资源文件 国际化
- Spring MVC 国际化
- 【笔记】Spring MVC学习指南(十)国际化
- spring mvc中,如何在 Java 代码里,获取 国际化 内容
- Spring MVC国际化配置 (转帖)
- spring mvc 国际化
- JSR-303 Spring MVC 消息国际化 配置
- spring mvc中,如何在 Java 代码里,获取 国际化 内容
- Spring MVC数据校验与国际化
- spring mvc 国际化
- Spring MVC 基于session 国际化配置!! 亲测可用
- spring mvc国际化(Local)和动态皮肤(Theme)功能
- Spring MVC国际化配置
- Spring MVC 国际化