在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