SpringMVC的国际化
关于SpringMVC的国际化,http://www.cnblogs.com/liukemng/p/3750117.html这篇文章已经讲的很好了。它讲了有如下几种国际化方式
1:基于Http的header信息的国际化(request.getLocale())
2:基于session的国际化(设置session的SessionLocaleResolver.LOCALE_SESSION_ATTRIBUTE_NAME
3:基于COOKIE的国际化
4:基于URL的国际化 (注意上面文章的第四种方法是错误的,因为spring的bean默认是单例,不要使用实例变量来保存状态,这样一个用户改变状态,所有用户都改变状态了)
基于session的实现方式要求有个入口的URL或者没有URL中都要求加入一个LANG参数,不是很方便,有没有一种方式我想加的时候加,不相加的是有使用前面的local 。经过实践基于URL的国际化解决我的问题。
配置applicaton.xml;
<mvc:interceptors>
<bean class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor" />
</mvc:interceptors> <bean id="localeResolver" class="com.sequoiadb.util.DBaasLocaleResolver"/>
实现DBaasLocaleResolver的方法
public class DBaasLocaleResolver extends AcceptHeaderLocaleResolver {
public Locale resolveLocale(HttpServletRequest request) {
HttpSession session=request.getSession();
Locale locale=(Locale)session.getAttribute("locale");
System.out.println("resolveLocale:"+locale.toString());
if (locale==null){
session.setAttribute("locale",request.getLocale());
return request.getLocale();
}else{
return locale;
}
}
public void setLocale(HttpServletRequest request, HttpServletResponse response, Locale locale) {
System.out.println("setLocale:"+locale.toString());
request.getSession().setAttribute("locale",locale);
}
}
添加国际化文件
在src目录下添加properties文件,中文转码要使用native2ascii.exe工具,这个是JDK自带的。
在这里说下,上面提到的那篇文章的基于URL的国际化代码有点问题,因为如果不带locale会报空指针异常,所以我修改了逻辑,第一次根据浏览器来进行国际化所以使用了request.getLocale(), 如果url中有locale参数就返回mylocale ,这个mylocale对象的构造在哪调我也不太清楚
唯一的bug就是你的locale参数填写错误也会默认使用浏览器来进行国际化,而不是使用上一次的locale。
SpringMVC的国际化的更多相关文章
- springMVC项目国际化(i18n)实现方法
SpringMVC项目国际化(i18n)实现方法 按照作息规律,每周五晚必须是分享知识的时间\(^o^)/~,这周讲点儿啥呢,项目需要逼格,咱们国际化吧(* ̄rǒ ̄)~,项目中碰到这类需求的童鞋可能并 ...
- SpringMVC实现国际化过程中所遇问题
前言:在利用SpringMVC实现国际化的过程中,看似简单,实则还是遇到了一些小问题,现在笔者对所遇问题总结如下. 注:笔者所用的编辑器为Intellij IEDA 14.1.7版本 1.国际化资源文 ...
- 一起学SpringMVC之国际化
随着网络的发展,在Web开发中,系统的国际化需求已经变得非常的普遍.本文主要讲解SpringMVC框架对多语言的支持,仅供学习分享使用,如有不足之处,还请指正. 什么是国际化? 国际化(interna ...
- springMVC之国际化
1.工程结构 2.jar包 3.配置文件spring-config.xml,springMVC配置文件 <?xml version="1.0" encoding=" ...
- Java SpringMVC实现国际化整合案例分析(i18n)
所谓国际化就是支持多种语言,web应用在不同的浏览环境中可以显示出不同的语言,比如说汉语.英语等.下面我将以具体的实例来举例说明: (1)新建动态Javaweb项目,并导入几个SpringMVC必需的 ...
- SpringMVC 资源国际化实现以及常见问题
资源国际化可以很方便的实现web项目语言的切换,解决了web项目按需显示不同语言界面的问题. SpringMVC 的资源国际化基于JDK的java.util.ResourceBundle实现,经过Sp ...
- Java SpringMVC实现国际化整合案例分析(i18n) 专题
所谓国际化就是支持多种语言,web应用在不同的浏览环境中可以显示出不同的语言,比如说汉语.英语等.下面我将以具体的实例来举例说明: (1)新建动态Javaweb项目,并导入几个SpringMVC必需的 ...
- 转-SpringMVC——之 国际化
原文地址:http://www.cnblogs.com/liukemng/p/3750117.html 在系列(7)中我们讲了数据的格式化显示,Spring在做格式化展示的时候已经做了国际化处理,那么 ...
- springmvc 资源国际化
<!-- 关于国际化: 1. 在页面上能够根据浏览器语言设置的情况对文本(不是内容), 时间, 数值进行本地化处理 2. 可以在 bean 中获取国际化资源文件 Locale 对应的消息 3. ...
随机推荐
- hbase离线定时入库shell脚本-小栗子
#!/bin/bash #######数据类型(cdr,ims,pc,.ngn_sip)###### dir=*** ############# #原始文件地址 oripath=/bigdata/da ...
- while 读取文件内容
exec < filename while read line;do echo $line done 方法1 while read line;do echo $line done<$ 方法 ...
- Spring Cloud之Feign客户端超时时间配置
关于雪崩效应: 默认情况下tomcat只有一个线程去处理客户端发送的所有请求.高并发情况下,如果客户端请求都在同一接口,tomcat的所有线程池去处理,导致其他接口服务访问不了,等待. Tomcat有 ...
- Mysql的链接超时异常CommunicationsException
原文是在博客上的:小重合之旅 链接如下:未经过作者同意,这里注明下. http://blog.csdn.net/bluesnail216/article/details/15810119 1,问题现象 ...
- JavaScript 的 async/await
随着 Node 7 的发布,越来越多的人开始研究据说是异步编程终级解决方案的 async/await. 异步编程的最高境界,就是根本不用关心它是不是异步. async 函数就是隧道尽头的亮光,很多人认 ...
- java: jsp:param中文乱码
java: jsp:param中文乱码 假如a.jsp/b.jsp文件中 a.jsp代码: 需要加入:request.setCharacterEncoding("UTF-8") ...
- 将任意一个jQuery对象进行表单序列化,免除了提交请求时大量拼写表单数据的烦恼,支持键值对<name&value>格式和JSON格式。
http://zhengxinlong.iteye.com/blog/848712 将任意一个jQuery对象进行表单序列化,免除了提交请求时大量拼写表单数据的烦恼,支持键值对<name& ...
- 关键字volidate和transient(转)
Volatile修饰的成员变量在每次被线程访问时,都强迫从主内存中重读该成员变量的值.而且,当成员变量发生变化时,强迫线程将变化值回写到主内存.这样在任何时刻,两个不同的线程总是看到某个成员变量的同一 ...
- codeforces 515C C. Drazil and Factorial(水题,贪心)
题目链接: C. Drazil and Factorial time limit per test 2 seconds memory limit per test 256 megabytes inpu ...
- HIVE SQL JOIN
最近总结了一下hive表关联的用法,与Postgres表关联还是有细微差别,总结在这里方便以后查看. join语法 join_table: table_reference [INNER] JOIN t ...