前言
记录学习历程
SpringMVC国际化
SpringMVC提供了对国际化的支持,使用ResourceBundleMessageSource实现国际化资源的定义
例:
(1)配置springmvc.xml配置文件
<!--配置ResourceBundleMessageSource-->
<!-- basename属性指定文件的基名,这里是资源文件以mess打头-->
<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
<property name="basename" value="mess"/>
</bean>
<!--配置SessionLocaleResolver,用于将local对象存储于Session中-->
<bean id="localResolver" class="org.springframework.web.servlet.i18n.SessionLocaleResolver"/>
<!--配置LocaleChangeInterceptor,用于获取请求中的locale信息,将其转为Locale对象,获取LocaleResolver对象-->
<mvc:interceptors>
<bean class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor"></bean>
</mvc:interceptors>
(2)在src目录下创建国际化资源属性文件
mess_en_US.properties,mess_zh_CN.proerties
创建file文件改后缀得到
mess_en_US.properties:
loginName=LoginName
loginPwd=LoginPwd
mess_zh_CN.properties
loginName=\u728\u6237\u540D
loginPwd=\u5BC6\u7801
(3)在HelloController类中添加方法
//国际化
//Locale 表示地区,每一个Locale对象都代表了一个特定的地理、政治和文化地区
@Autowired
private ResourceBundleMessageSource messageSource;
@RequestMapping(value = "/localeChange")
public String localeChange(Locale locale) {
//MessageSource接口,以用于支持信息的国际化和包含参数的信息的替换
String u = messageSource.getMessage("loginName",null,locale);
System.out.println("国际化资源文件Locale配置(loginName):"+u);
return "login";
}
@RequestMapping("/toLocale")
public String toLocale(){
return "login";
}
(4)index.jsp加一个跳转到login.jsp界面的超链接
新建login.jsp
index.jsp超链接
<a href="/springmvc/toLocale">TO LocaleChange</a>
新建login.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<a href="/springmvc/localeChange?locale=zh_CN">中文</a><br>
<a href="/springmvc/localeChange?locale=en_US">英文</a><br>
<fmt:message key="loginName"/><br>
<fmt:message key="loginPwd"/><br>
</body>
</html>
login.jsp页面头部使用taglib指令引入JSTL的fmt标签
项目中需要加入两个包
(5)测试