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