12、Spring MVC 之 Using locales
来源:互联网 发布:淘宝卖家破损补寄 编辑:程序博客网 时间:2024/06/06 02:44
Spring MVC的架构是支持i18n的。DispatcherServlet
让你能够使用客户端的locale自动解析message.主要是通过LocalResolver
这个对象办到的。
当前端请求到来,DispatcherSevlet
寻找一个locale解析器。如果它找到了,它就会试图用它来设置locale。使用RequestContext.getLocale()
方法,你可以检索locale然后可以使用locale解析器解析。
除了自动locale解析,在特殊情况下你还可以将拦截器附加到处理程序映射(for detail:Spring MVC 之 Handler mappings)来改变locale。例如,基于request当中的参数。
Locale解析器和interceptors定义在org.springframework.web.servlet.i18n
包中可以使用简单的方式来配置它到你的application上下方中。下面就是Spring中的一个选择区域的解析器。
1、获取Time Zone信息
除了获取客户端的locale,我们通常还需要知道它们的时区。继承自LocaleResolver
的LocaleContextResolver
接口让解析器提供了更丰富的LocaleContext
,其中包含时区信息。
使用RequestContext.getTimeZone()
方法可以获取到TimeZone
。时区信息将自动使用在Spring的ConversionService
注册的日期/时间Converter
和Formatter
对象。
2、AcceptHeaderLocaleResolver
这个locale解析器检查客户端(e.g. web浏览器)request的header中的accept-language
。通常这个头字段包含客户机的操作系统的语言环境.
注意:这个解析器不支持时区信息。
3、CookieLocaleResolver
这个解析器检查在客户端中Cookie
是否指定了Locale
或者TimeZone
。如果指定了话,它就会使用指定的细节。使用这个locale解析,你可以指定cookie的名字还有就是这个cookie存在的最大age.具体可以看下面定义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>
Table CookieLocaleResolver properties
4、SessionLocaleResolver
SessionLocaleResolver
允许你检查来自session(关联用户请求)的Locale
与TimeZone
。相对于CookieLocaleResolver
,这个策略存储会选择在本地设置Servlet容器的HttpSession
中的Locale。因此,这些设置为每个会话,因此只是会话终止时失去。
注意,与外部session管理机制没有直接的关系,例如Spring session project.SessionLocaleResolver.对当前HttpServletRequest
这个SessionLocaleResolver
将简单的评估和修改相应的HttpSession
属性。
5、LocaleChangeInterceptor
对于一个处理程序映射你使用添加LocaleChangeInterceptor
来改变locale.它将请求中检测参数,改变locale.它将会调用存在于context中的LocaleResolver
中的setLocale()
方法。下面的这个例子表示调用所有的*.view
资源包含siteLanguage
参数将会改变locale。例如,页面请求URL为:http://www.sf.net/home.view?siteLanguage=nl
将会设置站点的语言为Dutch。
<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>
因为水平有限,翻译不足之处还望见谅。
原文地址:spring-framework-reference-4.2.6.RELEASE
- 12、Spring MVC 之 Using locales
- 13、Spring MVC 之 Using themes
- Using UTF-8 locales in [B]LFS
- Get Started Using Spring MVC
- Common mistakes when using Spring MVC
- spring mvc之handlermapping
- Spring MVC 之 AbstractCommandController
- Spring MVC之MultiActionController
- Spring MVC 之 AbstractCommandController
- Spring MVC之HelloWorld
- Spring之MVC模块
- Spring MVC之MultiActionController
- Spring之MVC模块
- bbs---之spring mvc
- Spring MVC之 HelloWorld
- Spring MVC之 请求
- Spring MVC之 返回
- Spring MVC之 注解
- HDU 2289 Cup(二分+圆台体积)
- 图像标定与变换
- JAVAoo学习的第一天
- java技术达人养成记<1>一位java技术达人的成长历程(四年)
- 56.在Ubuntu上安装Gitlab过程详解
- 12、Spring MVC 之 Using locales
- java技术达人养成记<2>五年java学习路线规划建议
- Python3.3.2 算术运算----方法重写
- java技术达人成长记<3>WEB架构师成长之路(6年)
- 最后的王 Birkebeinerne (2016)
- 杭电oj编码2008
- 特殊的类型转换(单参构造,运算符重载)
- foreach()中的yield的使用
- Top K Frequent Elements