Spring MVC 的国际化是建立在 Java 国际化的基础之上的,Spring MVC 框架的底层国际化与 Java 国际化是一致的,作为一个良好的 MVC 框架,Spring MVC 将 Java 国际化的功能进行了封装和简化,开发者使用起来会更加简单、快捷。

由《Java国际化概念和使用介绍》教程可知国际化和本地化应用程序时需要具备以下两个条件:

  • 将文本信息放到资源属性文件中。
  • 选择和读取正确位置的资源属性文件。

下面讲解第二个条件的实现。

Spring MVC加载资源属性文件

在 Spring MVC 中不能直接使用 ResourceBundle 加载资源属性文件,而是利用 bean(messageSource)告知 Spring MVC 框架要将资源属性文件放到哪里。示例代码如下:

<bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleM essageSource"><property name="basenames"><list><value>/WEB-INF/resource/messages</value><value>/WEB-INF/resource/labels</value></list></property>
</bean>

语言区域的选择

在 Spring MVC 中可以使用语言区域解析器 bean 选择语言区域,该 bean 有 3 个常见实现,即 AcceptHeaderLocaleResolver、SessionLocaleResolver和 CookieLocaleResolver。

1)AcceptHeaderLocaleResolver

根据浏览器 Http Header 中的 accept-language 域设定(accept-language 域中一般包含了当前操作系统的语言设定,可通过HttpServletRequest.getLocale 方法获得此域的内容)。

改变 Locale 是不支持的,即不能调用 LocaleResolver 接口的 setLocale(HttpServletRequest request, HttpServletResponse response, Locale locale)方法设置 Locale。

2)SessionLocaleResolver

根据用户本次会话过程中的语言设定决定语言区域(例如用户进入首页时选择语言种类,则此次会话周期内统一使用该语言设定)。

3)CookieLocaleResolver

根据 Cookie 判定用户的语言设定(Cookie 中保存着用户前一次的语言设定参数)。

由上述分析可知,SessionLocaleResolver 实现比较方便用户选择喜欢的语言种类,教程中使用该方法进行国际化实现。

下面是使用 SessionLocaleResolver 实现的 bean 定义:

<bean id="localeResolver" class="org.springframework.web.servlet.il8n.SessionLocaleResolver"><property name="defaultLocale" value="zh_CN"></property>
</bean>

如果采用基于 SessionLocaleResolver 和 CookieLocaleResolver 的国际化实现,必须配置 LocaleChangeInterceptor 拦截器,示例代码如下:

<mvc:interceptors><bean class="org.springframework.web.servlet.il8n.LocaleChangeInterceptor"/>
</mvc:interceptors>

使用 message 标签显示国际化信息

在 Spring MVC 框架中可以使用 Spring 的 message 标签在 JSP 页面中显示国际化消息。在使用 message 标签时需要在 JSP 页面的最前面使用 taglib 指令声明 spring 标签,代码如下:

<%@taglib prefix="spring" uri="http://www.springframework.org/tags"%>

message 标签有以下常用属性。

  • code:获得国际化消息的 key。
  • arguments:代表该标签的参数。如果替换消息中的占位符,示例代码为“<spring:message code=“third” arguments=“888,999” />”,third对应的消息有两个占位符 {0} 和 {1}。
  • argumentSeparator:用来分隔该标签参数的字符,默认为逗号。
  • text:code 属性不存在,或指定的 key 无法获取消息时所显示的默认文本信息。

Spring MVC的国际化相关推荐

  1. Spring MVC国际化

    一.Spring MVC国际化简介        程序国际化是商业系统的一个基本要求,因为今天的软件系统不再是简单的单机程序,往往都是一个开放的系统,需要面对来自全世界各个地方的访问者,因此,国际化成 ...

  2. Spring MVC注解、标签库、国际化

    本篇文章主要介绍自己在学习Spring MVC常用注解.标签库.国际化遇到的一些问题,分享给大家,希望对你有所帮助. 问题一:指定扫描包的位置 应该将所有控制器类都放在基本包下,并且指定该扫描包,避免 ...

  3. Spring:项目国际化

    前言 在我们开发 javaWEB 项目的时候,项目可能涉及到在国外部署或者应用,也有可能会有国外的用户对项目进行访问 ,那么在这种项目中,为客户展现的页面或者操作的信息就需要使用不同的语言,这就是我们 ...

  4. Spring MVC基础知识整理➣国际化和异常处理

    概述 Spring框架为WEB项目提供了国际化以及异常处理机制.所谓的国际化也就是不同国籍,显示不同国籍的语言与符号.异常处理,也就是能够捕获WEB项目下的所有异常信息,并能处理记录这些异常信息机制. ...

  5. Spring MVC -- 国际化

    在全球化的今天,现在比过去更需要编写可以在不同语言国家和地区部署的应用程序.在这方面,需要了解两个术语: 国际化:常常缩写为i18n,因为其单词internationalization以i开始,以n结 ...

  6. Spring MVC国际化(i18n)和本地化(L10n)示例

    Spring MVC国际化(i18n)和本地化(L10n)示例 欢迎来到Spring Internationalization(i18n)教程.任何遍布全球的用户,国际化(i18n)或本地化(L10n ...

  7. spring mvc国际化_Spring MVC国际化(i18n)和本地化(L10n)示例

    spring mvc国际化 Welcome to the Spring Internationalization (i18n) tutorial. Any web application with u ...

  8. Spring MVC异常统一处理(异常信息的国际化,日志记录)

    JAVA EE项目中,不管是对底层的数据操作,还是业务层的处理过程,还是控制层的处理,都不可避免的会遇到各种可预知的(业务异常主动抛出).不可预知的异常需要处理.一般dao层.service层的异常都 ...

  9. Spring MVC框架有哪些优点

    Spring MVC是Spring提供的一个实现了Web MVC设计模式的轻量级Web框架.它与Struts2框架一样,都属于MVC框架,但其使用和性能等方面比Struts2更加优异. Spring ...

最新文章

  1. 从“新基建”重新认识数据中心
  2. VTK:图片之ImageOpenClose3D
  3. QCon北京2016启动筹备 众多热点专题诚征演讲嘉宾
  4. 2023届春招实习拉钩一面凉经
  5. easyUI 展开DataGrid里面的行显示详细信息
  6. Linux中文件颜色所代表的属性和颜色
  7. VScode 配置 Java 环境
  8. 基于安卓的视频遥控小车——红外遥控部分
  9. FFmpeg —— 14.示例程序(八):音频编码器(PCM编码为AAC)
  10. Java歌手评分系统
  11. OV7725摄像头显示VGA/LCD
  12. Oracle BI产品线
  13. 基于Arcgis对流域数据的提取及计算
  14. fail2ban重启默认清除iptables 取消默认
  15. 记录自己的成长--个人日记1
  16. 为什么脑子里有电波声_为什么有时会听到“电波声”?
  17. 收藏这些网站,找PPT设计素材不再发犯难(图标、信息图、配色、免版权免费图片)...
  18. 【每日一题】字符串解码
  19. ARM 官方文档下载地址
  20. 职业生涯规划:如何选择一家适合自己的公司?

热门文章

  1. Iometer存储测试工具参数说明-图形主界面(整理)
  2. 从北大高材生被华为辞退中我们需要学到什么?
  3. vSphere 6.5 High Availability New Features – Proactive HA(vSphere 6.5高可用性新功能–主动HA)
  4. Spring Cloud与微服务学习总结(10)——Spring Cloud 常见优化项的总结
  5. Java基础学习总结(141)——Cron 表达式使用再总结
  6. angular代码规范_同样写代码,为何差距越来越大?
  7. php自学目录,PHP学习笔记(二) 了解PHP的基本语法以及目录结构
  8. java 定时任务spring_Spring实现定时任务调度
  9. 转://工作中 Oracle 常用数据字典集锦
  10. VMware下CentOS6.8配置GFS文件系统