javascript
SpringMVC的国际化
關于SpringMVC的國際化,http://www.cnblogs.com/liukemng/p/3750117.html這篇文章已經(jīng)講的很好了。它講了有如下幾種國際化方式
1:基于Http的header信息的國際化(request.getLocale())
2:基于session的國際化(設置session的SessionLocaleResolver.LOCALE_SESSION_ATTRIBUTE_NAME
3:基于COOKIE的國際化
4:基于URL的國際化 ? ?(注意上面文章的第四種方法是錯誤的,因為spring的bean默認是單例,不要使用實例變量來保存狀態(tài),這樣一個用戶改變狀態(tài),所有用戶都改變狀態(tài)了)
?
基于session的實現(xiàn)方式要求有個入口的URL或者沒有URL中都要求加入一個LANG參數(shù),不是很方便,有沒有一種方式我想加的時候加,不相加的是有使用前面的local 。經(jīng)過實踐基于URL的國際化解決我的問題。
配置applicaton.xml;
?
<mvc:interceptors><bean class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor" /></mvc:interceptors><bean id="localeResolver" class="com.sequoiadb.util.DBaasLocaleResolver"/>實現(xiàn)DBaasLocaleResolver的方法
?
public class DBaasLocaleResolver extends AcceptHeaderLocaleResolver {public Locale resolveLocale(HttpServletRequest request) {HttpSession session=request.getSession();Locale locale=(Locale)session.getAttribute("locale");System.out.println("resolveLocale:"+locale.toString());if (locale==null){session.setAttribute("locale",request.getLocale());return request.getLocale();}else{return locale;}}public void setLocale(HttpServletRequest request, HttpServletResponse response, Locale locale) {System.out.println("setLocale:"+locale.toString());request.getSession().setAttribute("locale",locale);}}?
添加國際化文件
在src目錄下添加properties文件,中文轉碼要使用native2ascii.exe工具,這個是JDK自帶的。
?
在這里說下,上面提到的那篇文章的基于URL的國際化代碼有點問題,因為如果不帶locale會報空指針異常,所以我修改了邏輯,第一次根據(jù)瀏覽器來進行國際化所以使用了request.getLocale(), 如果url中有l(wèi)ocale參數(shù)就返回mylocale ,這個mylocale對象的構造在哪調我也不太清楚
唯一的bug就是你的locale參數(shù)填寫錯誤也會默認使用瀏覽器來進行國際化,而不是使用上一次的locale。
?
轉載于:https://www.cnblogs.com/gaoxing/p/4244310.html
總結
以上是生活随笔為你收集整理的SpringMVC的国际化的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 嵌入式linux和嵌入式android系
- 下一篇: 【 随笔 】 财源滚滚