`
yangzb
  • 浏览: 3470358 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

《Spring MVC I18N 配置说明》

阅读更多

一、基于浏览器语言的国际化配置

使用Spring的MVC,并且配置中有配置Resource文件

1
2
3
4
5
	<!-- 资源文件绑定器 -->
	<bean id="messageSource"
 class="org.springframework.context.support.ResourceBundleMessageSource"
>
		<property name="basename"
 value="message-info"
 />
		<property name="useCodeAsDefaultMessage"
 value="true"
 />
	</bean>


其中,message-info 是你的properties文件的通用名。如:我的配置文件叫message-info.properties,message-info_zh_CN.properties等等

只要有了这个配置,然后配置JSP渲染器为JSTL支持的,那么在你的JSP文件中使用fmt标记就可以实现客户浏览器语言国际化了。
如:<fmt:message key="info.login.title" />
其中的info.login.title和你的资源文件对应

二、基于动态加载的国际化配置

1、基于请求的国际化配置

基于请求的国际化配置是指,在当前请求内,国际化配置生效,否则自动以浏览器为主。

配置方式如下:
首先配置拦截器

1
2
3
	<!-- 国际化操作 拦截器 必需配置,可以和其它国际化方式通用 -->
	<bean id="localeChangeInterceptor
"
 class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor"
 />
 



这个配置呢,是不论请求级别的国际化,还是Cookie级别的国际化,再或者Session级别的国际化,都必需有配置这个拦截器 ,否则会不能使用。

配好上面的拦截器之后,就将拦截器注入到你的UrlHandlerMapping中,例如:

1
2
3
4
5
6
	<bean id="defaultUrlMapping"
 class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"
>
		<property name="interceptors
"
 ref="localeChangeInterceptor
"
 />
		<property name="order"
>
			<value>1</value>
		</property>
	</bean>



这个时候,但凡有了符合UrlMapping的请求,就会被拦截,并且开始配置国际化参数

1
2
	<bean id="localeResolver"
 class="org.springframework.web.servlet.i18n.AcceptHeaderLocaleResolver"
>
	</bean>



默认的参数名为locale 主意大小写。里面放的就是你的提交参数。如:en_US,zh_CN之类的,这个时候,你在页面上加一句

1
<a href="?locale=zh_CN"
>简体中文</a>

如果你的资源中,饱含建议中文的配置,那么就会变成你确定的简体中文拉。

2、基于Session的国际化配置

拦截器和基于请求的相同

Session的配置如下:

1
2
3
	<bean id="localeResolver
"
 class="org.springframework.web.servlet.i18n.SessionLocaleResolver"
>
	</bean>
 



在你的处理的Controller中,将提交上来的locale字段信息生成真正的Locale对象,然后将对象保存在Session中,默认保存的ID是

1
SessionLocaleResolver.LOCALE_SESSION_ATTRIBUTE_NAME



这样,当你的Session不过期,那么语言种类始终保持正确的说。我一直是这样子用的,我觉得还是Session的好,老外们用了很满意。

3、基于Cookie的国际化配置

这个我就不说了,反正用的不多,至少我做的项目能不用Cookie就不用Cookie,所以,基于Cookie的国际化配置我就不细说了,如果想知道怎么配置,那么下载一个Spring,其中的例子程序就是用Cookie配置的,你自己读代码就OK了。

三、注意事项

如果不用默认的浏览器语言国际化方式,那么拦截器一定要配置,如果你有多个UrlMapping,那么就每个都配上拦截器。
至于配置的LocaleResolver的名字,一定要用上面的配置中的名字localeResolver 当然了,这个是默认的名字来的,自己设置成别的也可以,但是就是麻烦,反正我用默认的就感觉不错。

好啦,说了这么多,应该大家会配置了吧,表说你不知道Locale对象怎么生成哦~

分享到:
评论

相关推荐

    SpringI18n:这是一个spring mvc的国际化项目, 该项目会尽量阐述i18n的原理与机制

    SpringI18n这是一个spring mvc的国际化项目, 该项目会尽量阐述i18n的原理与机制这是一个简单的Spring管理的I18n Demo Cookie 和Session中的localeResolver只能注册一种,所以需要测试哪种另一种需要在spring配置文件...

    Spring 3 MVC 国际化 ResourceBundleMessageSource spring:message

    spring mvc 入门配置 国际化配置 易扩展。 error_messages_en.properties error_messages_zh.properties 没有库文件,maven配好了会自动加载库文件。也可自己搭建好,拷贝文件过去运行。可参考...

    Spring攻略(第二版 中文高清版).part1

    11.7 国际化(I18n)信息属性 458 11.7.1 问题 458 11.7.2 解决方案 458 11.7.3 工作原理 458 11.8 改变永久性存储系统 461 11.8.1 问题 461 11.8.2 解决方案 461 11.4.3 工作原理 461 11.9 日志 ...

    Spring攻略(第二版 中文高清版).part2

    11.7 国际化(I18n)信息属性 458 11.7.1 问题 458 11.7.2 解决方案 458 11.7.3 工作原理 458 11.8 改变永久性存储系统 461 11.8.1 问题 461 11.8.2 解决方案 461 11.4.3 工作原理 461 11.9 日志 ...

    Grails1.1中文文档

    基于 Spring 的 MessageSource 核心概念的国际化 (i18n) 支持 基于 Spring 的抽象事务概念的事务服务层 所有这些都非常易于使用,这得益于 Groovy 语言的强大以及 Domain Specific Languages (DSLs) 的广泛使用。 ...

    Milkomeda:Spring扩展了从商务经验中构建的组件,使开发人员能够尽快使用Spring Boot进行开发。(基于Spring生态打造的各种来自业务上的快速开发模块集合。)

    Milkomeda 该项目名称的灵感来自银河系,仙女座... 0.1.0+ 取决于:Spring MVC Comet:用于统一请求方面记录(包括控制器层和服务层( 1.12.0+ ))。 0.2.0+ 取决于:Spring MVC Struts:用于if / else业务块拆分。

    ist的matlab代码-angularjs-springmvc-example:一个带有springmvc示例的非常简单的angularjs

    客户端I18N 安全 没有全局变量的Javascript 原始文件位于 流浪汉 在项目中,有一个Vagrant文​​件,可以在Vagrant的帮助下启动VM,然后为其配置Puppet,以便最后运行带有Tomcat的VM,并在其中部署示例应用程序。 ...

    Struts2 in action中文版

    11.1.2 Struts 2如何解决本地Java对i18n支持的问题 243 11.2 Struts 2 i18n示例 244 11.2.1 Struts 2 i18n快速展示 244 11.2.2 幕后一览 246 11.3 Struts 2 i18n详情 247 11.3.1 Struts 2默认的TextProvider Re-...

    拦截器和控制器的区别

    converter 转换器 i18n struts2 spring MVC 拦截器 interceptor 过滤器 filter web.xml implements filter filterchain arg2.doFilter(req,resp); 监听器 servlet application /session /request 6/8 个 ...

    Grails实战教程-整合版

    现如今,基于Java的网站开发明显过于复杂,远超实际工作需要。在Java领域中,大部分的网站开发框架也没有严格的...使用Spring的MessageSource实现国际化(i18n) 一个基于Spring事务抽象的事务层 借助功能强大的Groovy

    springMvc_angular

    AngularJS-SpringMVC-example AngularJS 和 Spring-MVC 交互的示例项目。 显示了以下功能: 基本配置 Spring MVC / AngularJS 简单的 CRUD 功能 ...客户端 I18N 安全 没有全局变量的 Javascript

    低清版 大型门户网站是这样炼成的.pdf

    3.3.5 i18n标签详解 122 3.3.6 include标签详解 123 3.3.7 param标签详解 126 3.3.8 push标签详解 127 3.3.9 set标签详解 128 3.3.10 text标签详解 129 3.3.11 url标签详解 130 3.3.12 property标签详解 132 ...

    Java/JavaEE 学习笔记

    第六章 Internationalization(I18N:国际化)..........................283 struts1.x...283 一、开发struts1应用的基本步骤...283 二、Struts的工作流程......................284 三、struts-config.xml配置文件中...

    J2EE学习笔记(J2ee初学者必备手册)

    第六章 Internationalization(I18N:国际化)..........................283 struts1.x...283 一、开发struts1应用的基本步骤...283 二、Struts的工作流程......................284 三、struts-config.xml配置文件中...

Global site tag (gtag.js) - Google Analytics