zoukankan      html  css  js  c++  java
  • Spring 4 官方文档学习(十一)Web MVC 框架之locales

    http://docs.spring.io/spring/docs/current/spring-framework-reference/html/mvc.html#mvc-localeresolver

    Spring架构的多数部分都支持国际化,如同Spring Web MVC这样。DispatcherServlet使得你可以自动的处理messages -- 使用客户端的locale。 这是通过LocaleResolver对象完成的。

    当一个请求进来时,DispatcherServlet会查找一个locale resolver,如果找到了一个,它会试着使用它来设置locale。 使用RequestContext.getLocale()方法,你可以一直获取到由locale resolver处理过的locale。

    除了自动的locale处理,你还可以添加一个拦截器来处理映射,以在特定情景下改变locale,例如,基于请求中的某个parameter。

    Locale resolvers和拦截器,都是定义在包 org.springframework.web.servlet.i18n 中,然后在你的应用context中以常规方式配置。 这里是Spring中locale resolvers的一个选择。

    1、获取Time Zone信息

    除了获取客户端的locale,还经常需要知道他们的时区信息。LocaleContextResolver接口扩展了LocalResolver,允许resolvers提供更加丰富的LocaleContext -- 可能含有时区信息。

    当可以的时候,用户的TimeZone 可以使用RequestContext.getTimeZone()获取。 Spring ConversionService中注册的Date/Time Converter和Formatter会自动的使用时区信息。

    2、AcceptHeaderLocaleResolver

    这个locale resolver会检查请求中的accept-language header。一般,该header字段包含了客户端操作系统的locale。

    注意,该locale resolver不支持时区信息。

    3、CookieLocaleResolver

    该locale resolver会检查可能存在于客户端的Cookie,以判断是否指定了Locale或者TimeZone。如果有,就会使用指定的信息。通过使用该locale resolver的properties,你可以指定cookie的名字以及寿命。 下例:

    <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 22.4. CookieLocaleResolver properties

    PropertyDefaultDescription

    cookieName

    classname + LOCALE

    The name of the cookie

    cookieMaxAge

    Integer.MAX_INT

    The maximum time a cookie will stay persistent on the client. If -1 is specified, the cookie will not be persisted; it will only be available until the client shuts down their browser.

    cookiePath

    /

    Limits the visibility of the cookie to a certain part of your site. When cookiePath is specified, the cookie will only be visible to that path and the paths below it.

    4、SessionLocaleResolver

    SessionLocaleResolver 允许你从session中获取Locale和TimeZone。 相对于CookieLocaleResolver,这种策略会在Servlet容器的HttpSession中存储选中的locale设置。相应的,这些设置相对每个session来说都是临时的,并且,当每个session结束时会丢失。

    注意,这和外部session管理机制没有直接的关系 -- 如Spring Session project。这个SessionLocaleResolver会简单的评估和修改当前HttpServletRequest相应的HttpSession attributes。

    5、LocaleChangeInterceptor

    通过将LocaleChangeInterceptor添加到handler mappings之一,你可以启用locales的改变。它会探测request中的一个parameter,并修改locale。 它会调用LocaleResolver的setLocale()。下例示意了调用含有名字为siteLanguage的parameter的所有”*.view”资源,会立即改变locale。对该例来说,请求”http://www.sf.net/home.view?siteLanguage=nl” 会改变site语言为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>
  • 相关阅读:
    通用权限管理设计 之 数据库结构设计
    jQuery LigerUI 插件介绍及使用之ligerDateEditor
    jQuery LigerUI 插件介绍及使用之ligerTree
    jQuery LigerUI V1.01(包括API和全部源码) 发布
    jQuery liger ui ligerGrid 打造通用的分页排序查询表格(提供下载)
    jQuery LigerUI V1.1.5 (包括API和全部源码) 发布
    jQuery LigerUI 使用教程表格篇(1)
    jQuery LigerUI V1.0(包括API和全部源码) 发布
    jQuery LigerUI V1.1.0 (包括API和全部源码) 发布
    nginx keepalived
  • 原文地址:https://www.cnblogs.com/larryzeal/p/6132244.html
Copyright © 2011-2022 走看看