Spring MVC的国际化
由《Java国际化概念和使用介绍》教程可知国际化和本地化应用程序时需要具备以下两个条件:
Spring MVC加载资源属性文件
在 Spring MVC 中不能直接使用 ResourceBundle 加载资源属性文件,而是利用 bean(messageSource)告知 Spring MVC 框架要将资源属性文件放到哪里。示例代码如下:
bean id= messageSource > 语言区域的选择在 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 > property name= defaultLocale value= zh_CN /property
/bean如果采用基于 SessionLocaleResolver 和 CookieLocaleResolver 的国际化实现,必须配置 LocaleChangeInterceptor 拦截器,示例代码如下:
mvc:interceptors
使用 message 标签显示国际化信息
bean > /mvc:interceptors在 Spring MVC 框架中可以使用 Spring 的 message 标签在 JSP 页面中显示国际化消息。在使用 message 标签时需要在 JSP 页面的最前面使用 taglib 指令声明 spring 标签,代码如下:
%@taglib prefix= spring uri= http://www.springframework.org/tags %
message 标签有以下常用属性。
arguments:代表该标签的参数。如果替换消息中的占位符,示例代码为 spring:message code= third arguments= 888,999 / ,third 对应的消息有两个占位符 {0} 和 {1}。 argumentSeparator:用来分隔该标签参数的字符,默认为逗号。 text:code 属性不存在,或指定的 key 无法获取消息时所显示的默认文本信息。
相关文章
- Spring Cloud Alibaba是如何整合Spring Cloud原生注册中心?
- Spring MVC框架:第四章:属性域使用(request域、session域、application域)
- 面试突击84:Spring 有几种事务隔离级别?
- Spring MVC各组件近距离接触--上--02
- Spring MVC更多家族成员----Handler与HandlerAdaptor---07
- Spring MVC更多家族成员--国际化视图与LocalResolver---10
- 基于Spring MVC + Spring + MyBatis的【密室逃脱游戏主题排行榜】
- 如何解决 Spring Cloud 下测试环境路由问题
- 理解 Spring ApplicationListener
- Spring JDBC与事务管理
- Spring MVC框架:第二章:视图解析器和@RequestMapping注解使用在类级别及获取原生Servlet API对象
- Spring MVC框架:第一章:SpringMVC概述及初步体会SpringMVC使用过程
- Spring MVC框架:第五章:静态资源访问与mvc:view-controller
- Spring MVC框架:第九章:文件上传
- Spring MVC框架:第十三章:类型转换
- Spring MVC入门与数据绑定
- Spring MVC中redirect重定向3种方式(带参数)
- Spring+Spring MVC+MyBatis_java的图书管理系统
- springboot配置多个yml_spring几种配置方式
- 关于spring事务你需要知道的知识点
- Java框架Spring入门-第一个spring项目
- IDEA无法使用Spring Initializr进行初始化解决
- Spring Boot 源码阅读初始化环境搭建
- Spring Cloud 2020.0.4 发布!
- 一个根据URI定位到spring mvc映射代码工具类详解编程语言
- Spring AOP详解所需要的包编程语言
- spring的AOP(二)—-JDK动态代理详解编程语言
- activemq , spring 多个ip监听同一个mq详解编程语言
- spring mvc返回json字符串的方式详解编程语言
- Spring Cloud(九):分布式配置中心和消息总线详解编程语言
- spring中bean的scope属性理解详解编程语言
- spring MVC详解编程语言
- java.lang.IllegalArgumentException: More than one fragment with the name [spring_web] was found.详解编程语言
- 实现C MVC框架快速连接MySQL(c mvc连接mysql)