Spring MVC Locale 本地化示例詳解
通過RequestContext.getLocale()獲取到對應的Locale
Spring各模塊都支持國際化,SpringMVC也同樣支持。DispatcherServlet通過Locale Resovler自動根據(jù)客戶端的Locale支持國際化。
request請求上來后,DispatcherServlet查找并設置Locale Resovler,我們可以通過RequestContext.getLocale()獲取到對應的Locale。
此外,可以利用攔截器在特定情況下修改locale,比如,根據(jù)請求參數(shù)修改locale。這項功能對于通過頁面選項指定locale的應用非常有用(比如在頁面上選擇中文/英文的方式指定應用的語言)。
Locale Resolver和攔截器定義在org.springframework.web.servlet.i18n包,可以通過配置文件指定,Spring支持如下locale resolver:
- Time Zone
- Header Resolver
- Cookie Resovlver
- Session Resolver
- Locale Interceptor
Time Zone
除獲取用戶locale之外,有時候也需要獲取到用戶的時區(qū),LocaleContextResolver接口通過擴展LocaleResovler可提供對時區(qū)的支持。
可通過RequestContext.getTimeZone() 獲取用戶時區(qū)。
Header Resolver
Header Resolver通過解析請求頭的accept-language,從而獲取到客戶端瀏覽器發(fā)送上來的相關(guān)頭信息。
SpringMVC提供的Header Resolver:AcceptHeaderLocaleResolver。
瀏覽器默默認會發(fā)送相關(guān)的請求頭信息:
SpringMVC通過DispatcherServlet.properties指定的默認LocaleResolver正是Header Resolver:
org.springframework.web.servlet.LocaleResolver=org.springframework.web.servlet.i18n.AcceptHeaderLocaleResolver
Cookie Resolver
檢查客戶端發(fā)送上來的請求的cookie中是否包含Locale或TimeZone信息,如包含則應用該信息創(chuàng)建Locale。
SpringMVC提供的Cookie Resolver:org.springframework.web.servlet.i18n.CookieLocaleResolver。
通過如下方式配置:
<bean id="localeResolver" class="org.springframework.web.servlet.i18n.CookieLocaleResolver"> <property name="cookieName" value="clientlanguage"/> <!-- in seconds. If set to -1, the cookie is not persisted (deleted when browser shuts down) --> <property name="cookieMaxAge" value="100000"/> </bean>
Session Resolver
SessionLocaleResolver通過session獲取客戶端的Locale和TimeZone信息,信息存儲在HttpSession中,隨著session的失效而失效。
Locale Interceptor
使用攔截器、通過頁面參數(shù)設置Locale。SpringMVC提供了一個LocaleChangeInterceptor攔截器,可以直接使用。
比如:
<bean id="localeChangeInterceptor" class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor"> <property name="paramName" value="siteLanguage"/> </bean> <bean id="localeResolver" class="org.springframework.web.servlet.i18n.CookieLocaleResolver"/> <bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"> <property name="interceptors"> <list> <ref bean="localeChangeInterceptor"/> </list> </property> <property name="mappings"> <value>/**/*.view=someController</value> </property> </bean>
配置localeChangeInterceptor,指定其參數(shù)名稱為siteLanguage,將該攔截器配置到SimpleUrlHandlerMapping上,對*.view請求,根據(jù)請求參數(shù)siteLanguage決定其locale。
以上就是Spring MVC Locale 本地化示例詳解的詳細內(nèi)容,更多關(guān)于Spring MVC Locale 本地化的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
JAVA基本類型包裝類 BigDecimal BigInteger 的使用
Java 中預定義了八種基本數(shù)據(jù)類型,包括:byte,int,long,double,float,boolean,char,short,接下來文章小編將向大家介紹其中幾個類型的內(nèi)容,需要的朋友可以參考下文章2021-09-09解決@RequestBody接收json對象報錯415的問題
這篇文章主要介紹了解決@RequestBody接收json對象報錯415的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-06-06java并發(fā)編程包JUC線程同步CyclicBarrier語法示例
這篇文章主要為大家介紹了java并發(fā)編程工具包JUC線程同步CyclicBarrier語法使用示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-03-03Spring Security代碼實現(xiàn)JWT接口權(quán)限授予與校驗功能
本文給大家介紹Spring Security代碼實現(xiàn)JWT接口權(quán)限授予與校驗功能,本文通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友參考下吧2019-12-12在IDEA中配置tomcat并創(chuàng)建tomcat項目的圖文教程
這篇文章主要介紹了在IDEA中配置tomcat并創(chuàng)建tomcat項目的圖文教程,需要的朋友可以參考下2020-07-07SpringMVC 重新定向redirect請求中攜帶數(shù)據(jù)方式
這篇文章主要介紹了SpringMVC 重新定向redirect請求中攜帶數(shù)據(jù)方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-12-12