spring mvc国际化资源实现
来源:互联网 发布:战龙三国旗子进阶数据 编辑:程序博客网 时间:2024/05/16 15:54
springMVC给我们提供了国际化支持,简单来说就是设置整个系统的运行语言,然后根据系统的运行语言来展示对应语言的页面,一般我们称之为多语言。通过源码我们可以了解到springMVC对多语言的支持就是设置Locale的语言信息来实现的,只不过是设置了通过cookie、session等方式设置而已。
springMVC多语言具体由拦截器LocaleChangeInterceptor,解析器LocaleResolver,资源管理器来实现。
LocaleChangeInterceptor需要在配置文件中设置,用来获取客户端的Local信息。
解析器LocaleResolver接口有四个默认实现的类AcceptHeaderLocaleResolver,FixedLocaleResolver、CookieLocaleResolver和SessionLocaleResolver。
AcceptHeaderLocaleResolver:其实没有任何具体实现,是通过浏览器头部的语言信息来进行多语言选择。
FixedLocaleResolver:设置固定的语言信息,这样整个系统的语言是一成不变的,用处不大。
CookieLocaleResolver:将语言信息设置到Cookie中,这样整个系统就可以获得语言信息
SessionLocaleResolver:与CookieLocaleResolver类似将语言信息放到Session中,这样整个系统就可以从Session中获得语言信息。
资源管理器同样需要在配置文件中配置,主要有两个实现类:ResourceBundleMessageSource 和ReloadableResourceBundleMessageSource
要关心的是这两个的区别:
1.ResourceBundleMessageSource在xml配置中无法指定编码:
<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
<property name="basenames">
<list>
<value >error</value >
<value >message</value >
</list>
</property>
</bean>
而ReloadableResourceBundleMessageSource可以指定编码,譬如:
<bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
<property name="defaultEncoding" value ="gbk" />
<property name="basename" value ="message" />
</bean>
2.加载资源文件的方式不同:
ResourceBundleMessageSource的加载,使用ClassUtils.getDefaultClassLoader()加载器,getDefaultClassLoader方法;
JVM默认的加载方式,先从当前线程中获取类加载器,如果没有,就获取这个类本身的类加载器
ReloadableResourceBundleMessageSource默认也使用ClassUtils.getDefaultClassLoader()加载器。
ReloadableResourceBundleMessageSource加载时,默认使用DefaultResourceLoader,他会先判断资源path是否带有classpath:前缀,如果有,用 ClassPathResource去加载资源文件,如果没有试着用文件协议的url去访问,再没有就在contextPath即WEB-INF下查找。
资源配置文件的时候注意useCodeAsDefaultMessage属性设置,默认为false,这样当Spring在ResourceBundle中找不到messageKey的话,就抛出NoSuchMessageException, 把它设置为True,则找不到不会抛出异常,而是使用messageKey作为返回值。
- spring mvc国际化资源实现
- 使用Spring MVC 实现 国际化
- spring MVC 国际化实现配置
- Spring MVC国际化的实现
- Spring MVC +i18n实现国际化
- 使用spring实现资源国际化
- Spring MVC 1 资源文件 国际化
- Spring mvc之JSR303框架实现数据格式化,数据验证,资源国际化
- Spring mvc下国际化的实现
- spring MVC国际化的简单实现
- Spring MVC国际化配置
- Spring MVC国际化配置
- Spring MVC国际化
- Spring MVC国际化
- Spring MVC 国际化
- Spring MVC 国际化
- Spring mvc国际化
- spring mvc 国际化
- dubbo问题记录-多注册中心配置错导致爆内存
- Ancient Cipher (UVA-10340 && POJ-2159)
- Android适配三星S8的18.5:9,小米mix全面屏
- Android RecyclerView工作原理分析(下)
- centos 6.5上redis安装与配置
- spring mvc国际化资源实现
- LNMP框架的搭建(nginx的安装与配置)
- require String parameter "password" is not parent
- 20170615的代码
- 在MAC上安装软件,可能不是来自官方的软件,这时需要对来源进行选择,可以使用以下方式打开
- java:具有返回值的函数,没有返回值的函数及三目运算符的运用
- java线程池
- Android CoordinatorLayout和Behavior的源码分析(二)
- 链表倒数第n个节点