spring基於URL請求改變語言環境
已經完成基於浏覽器的國際化,現在添加基於URL請求的國際化,查資料後配置如下,
資料不全,配置起來後總有問題,發出來步驟,求大蝦指點。
messageSource 以及 properties已經配置好
1.在xml中添加
2.重寫類
3.後台設置
4訪問
一個共設置這麼多,哪裡哪裡有陋或者錯的,求指點
Spring對國際化的支持
Spring使用攔截器支持國際化很方便,使用時只需要兩個步驟:
一.spring配置
具體配置方式如下:
class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor" />
/util:list
class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping">
這時還需要本地化處理器進行處理,有三種處理器,如下:
3.基於cookie
以上三種處理器理論上配置任意一個就可以,不過有兩點需要注意:
1)第二個不能直接使用,需要通過繼承重寫相應的方法,如下:
public class MyLocaleResolver extends AcceptHeaderLocaleResolver{
private Locale myLocal;
public Locale resolveLocale(HttpServletRequest request) {
return myLocal==null?request.getLocale():myLocal;
}
public void setLocale(HttpServletRequest request, HttpServletResponse response, Locale locale) {
myLocal = locale;
}
}
修改配置文件中的localeResolver配置,class指向這個類就可以了。
2)第一與第三個用法相同,只不過前者使用session,session過期就需要重新設置,而後者使用cookie,可以根據項目的具體情況進行選擇。
一般來說,使用第一種和第三種比較常見。
二.使用方法
當不做處理時默認會使用浏覽器自己的語言設置,如果想改變語言,只需要在請求後面加上一個參數即可,
默認的參數名為locale,裡面放的就是你的提交參數,如:en_US,zh_CN之類的,
所以,只需要在頁面上加上相應的鏈接即可,如下:
中文
英文
頁面中使用jstl或spring標簽,如下:
無論使用哪種處理器,locale設置過一次就可以了,不需要每個連接後面都加上locale參數。