Spring MVC完成指南(三)國際化的支持:Spring MVC Velocity

在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

 

發佈了130 篇原創文章 · 獲贊 15 · 訪問量 30萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章