第五章 Spring MVC的国际化

Spring MVC的国际化是建立在Java国际化的基础之上的,其一样也是通过提供不同国家/语言环境的消息资源,然后通过ResourceBundle加载指定Locale对应的资源文件,再取得该资源文件中指定key对应的消息。这整个过程与Java程序的国际化完全相同,只是Spring MVC框架对Java程序国际化进行了进一步的封装,从而简化了应用程序的国际化。

Spring MVC的国际化步骤与Java国际化的步骤基本相似,只是实现起来更加简单。Spring MVC的国际化可按以下步骤进行:

(1)给系统加载国家化资源文件

(2)输出国际化。Spring MVC输出国际化消息有两种方式

  • 在视图页面上输出国际化消息,需要使用Spring MVC的标签库

  • 在Controller的处理方法中输出国家化消息,需要使用org.springframework.web.servlet.support.RequestContext的getMessage()方法。

P88 Spring MVC国家化的相关知识

P88 MessageSource

在Spring MVC中,不直接使用java.util.ResourceBundle,而是利用messageSource bean告诉Spring MVC国际化的属性文件保存在哪里。配置信息代码文件如下所示:

<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
  <property name="basenames">
    <list>
      <value>message</value>
      <value>fkit</value>
    </list>
  </property>
</bean>

上面的配置使用了ResourceBundleMessageSource类作为messageSource bean的实现,basenames属性用来指定国际化的属性文件名称。如果项目中只有一组属性文件,则可以使用basename来制定国际化的属性文件名称,实例代码如下:

<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
  <property name="basenames" value="message"/>
</bean>

P88 localeResolver

为用户选择语言区域时,最常用的方法是通过读取用户浏览器的accept-language标题值。accept-language标题提供了关于用户浏览器语言的信息。选择语言区域的其他方法还包括读取HttpSession或者Cookie。

在Spring MVC中选择语言区域,可以使用语言区域解析器。Spring MVC提供了一个语言区域解析器接口LocaleResolver,该接口的常用实现类都在org.springframework.web.servlet.i18n包下面,包括:

  • AcceptHeaderLocaleResolver
  • SessionLocaleResolver
  • CookieLocaleResolver

其中,AcceptHeaderLocaleResolver是默认的,也是最容易使用的语言区域解析器。使用它,Spring MVC会读取浏览器的accept-language标题,来确定使用那个语言区域。AcceptHeaderLocaleResolver可以不用显式配置,而SessionLocaleResolver和CookieLocaleResolver需要手动显式配置。

扫描二维码关注公众号,回复: 2624639 查看本文章

P89 message标签

在Spring MVC中显示本地化消息通常使用Spring的message标签。使用message标签,需要在JSP页面最前面使用taglib指令导入Spring的标签库,如下所示:

%@taglib prefix="spring" url="http://www.springframework.org/tags"%
message标签的属性(所有属性均为可选)
属性 描述
arguments 标签的参数,可以是一个字符串、数组或对象
argumentSepatorar 用来分隔该标签参数的字符
code 获取消息的key
htmlEscape boolean值,表示被渲染的值是否应该进行HTML转义
javaScriptEscape boolean值,表示被渲染的值是否应该进行javaScript转义
message MessageSourceResolver参数
scope 保存var属性中定义的变量的作用范围域
text 如果code属性不存在,所显示的默认文本
var 用于保存消息的变量

P89 AcceptHeaderLocaleResolver国际化

AcceptHeaderLocaleResolver是默认的,也是最容易使用的语言区域解析器。使用它,Spring MVC会读取浏览器的accept-language标题,来确定使用哪个语言区域。AcceptHeaderLocaleResolver可以不用显式配置,也可以显式配置。

P92 SessionLocaleResolver国际化

SessionLocaleResolver不是默认的语言区域解析器,需要对其进行显式配置。如果使用它,Spring MVC会从HttpSession作用域中获取用户所设置的语言区域,来确定使用哪个语言区域。

P95 CookieLocaleResolver国际化

CookieLocaleResolver不是默认的语言区域解析器,需要显式对其进行配置。使用它,Spring MVC会从Cookie中获取用户所设置的语言区域,来确定使用哪个语言区域。

2018.8.6 

 キラメキ—wacci

再见我的青春

再见双门洞

猜你喜欢

转载自blog.csdn.net/Altr1aPendrag0n/article/details/81434192
今日推荐