Spring MVC完成指南(三)国际化的支持:Spring MVC Velocity

来源:互联网 发布:网络性能指标并发 编辑:程序博客网 时间:2024/05/18 01:10

在Spring的国际化配置中,一共有三种描述方式:

第一种:AcceptHeaderLocaleResolver

<bean id="localeResolver" class="org.springframework.web.servlet.i18n.AcceptHeaderLocaleResolver">        </bean>
默认的参数名为locale主意大小写。里面放的就是你的提交参数。如:en_US,zh_CN之类的,这个时候,你在页面上加一句<a href="?locale=zh_CN">简体中文</a>

第二种:Session

Session的配置如下: 
 <bean id="localeResolver" class="org.springframework.web.servlet.i18n.SessionLocaleResolver"></bean> 
在你的处理的Controller中,将提交上来的locale字段信息生成真正的Locale对象,然后将对象保存在Session中,默认保存的ID是SessionLocaleResolver.LOCALE_SESSION_ATTRIBUTE_NAME
这样,当你的Session不过期,那么语言种类始终保持正确的说。我一直是这样子用的,我觉得还是Session的好,老外们用了很满意。

 

第三种:

基于Cookie的国际化配置 
<bean id="localeResolver" class="org.springframework.web.servlet.i18n.CookieLocaleResolver"/> 

 

这三种方式都可以解决国际化的问题,

对应的拦截方式:

<bean id="localeChangeInterceptor" class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor" /> 

在mapping url映射的时候,可以调用这个属性来跳转的时候,进行国际化的拦截。

不过我在使用国际化的时候,没有使用这个拦截方法。

 

另外最重要的地方,是在调用spring的message的标签。

在Spring MVC中使用<spring:message code="title"/>这样的标签来显示,但是Velocity中用这个方法就读不到值,翻了一天资料才搞定这个问题,使用#springMessage("title") 这种方式就可以解决问题。

 

另外需要注意调用Spring.tld,不然标签无法识别。

<%@ taglib prefix="spring" uri="/WEB-INF/spring.tld"%>

 

总算折腾完国际化的问题了。继续研究关于Controller和MultiActionController

0 0
原创粉丝点击