springmvc国际化+freemarker整合 一步步走来
这里记录一下 ‘打杂’工作的spring国际化 记录一下 同时也是帮助各位朋友!
一,加入两个配置文件,分别是中英文
二,在spring-mvc.xml文件里加入这些配置
<!-- 国际化操作 拦截器 必需配置,可以和其它国际化方式通用 -->
<mvc:interceptors>
<bean id="localeChangeInterceptor" class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor" />
</mvc:interceptors>
<!-- 配置国际化资源文件路径 -->
<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
<property name="basename">
<!-- 定义消息资源文件的相对路径 -->
<value>messages/message</value>
</property>
<property name="cacheSeconds" value="1800"></property>
</bean>
<!-- 基于Cookie的本地化解析器 -->
<bean id="localeResolver" class="org.springframework.web.servlet.i18n.CookieLocaleResolver">
<!-- 设置最大有效时间,如果是-1,则不存储,浏览器关闭后即失效,默认为Integer.MAX_INT-->
<property name="cookieMaxAge" value="1800"/>
<property name="defaultLocale" value="zh_CN"/>
<!-- 设置cookieName名称,可以根据名称通过js来修改设置,也可以像上面演示的那样修改设置,默认的名称为 类名+LOCALE(
即:org.springframework.web.servlet.i18n.CookieLocaleResolver.LOCALE-->
<property name="cookieName" value="Language"></property>
</bean>
<!-- 基于Session的本地化解析器 -->
<!--<bean id="localeResolver" class="org.springframework.web.servlet.i18n.SessionLocaleResolver" />-->
三,在页面上引入 <#import "/base/spring.ftl" as spring/> 提一下 这是spring-webmvc.jar自带的spring.ftl,粘过来用即可,路径为org\springframework\web\servlet\view\freemarker
四,页面上加两个中英文切换的按钮
<a href="${ctx}/language.do?language=zh_CN" class="btn btn-blue"><@spring.message code="Chinese"/></a>
<a href="${ctx}/language.do?language=en" class="btn btn-blue"><@spring.message code="English"/></a>
五,在controller中写入一个方法
@RequestMapping("language")
public ModelAndView language(HttpServletRequest request,HttpServletResponse response){
String language = request.getParameter("language").toLowerCase();
if(language==null||language.equals("")){
return new ModelAndView("redirect:/");
}else{
String[] split = language.split("_");
if(split.length>1){
resolver.setLocale(request, response, new Locale(split[0],split[1]));
}else{
resolver.setLocale(request, response, new Locale(split[0]));
}
}
return new ModelAndView("redirect:/");
}
六,传入key值,这里值得提一下的是,用ApplicationContext接口的getMessage方法,便可返回value,不用去傻傻的去遍历配置文件