文档章节

Spring MVC中使用国际化和主题

AlphaGo
 AlphaGo
发布于 2016/03/18 00:42
字数 713
阅读 78
收藏 1

        Spring的大部分组件都支持国际化,Spring web MVC框架也是如此。DispatcherServlet能够使用客户端的本地化信息自动解析信息,而这是通过LocaleResolver对象完成的。

        当请求到来,DispatcherServlet会寻找一个locale resolver,如果找到,就使用它来设置本地化信息,你可以使用RequestContext.getLocale()方法获得这个本地化信息。除了自动的本地化解析,你还可以在特定情形下给handler mapping设置拦截器来改变本地化设置,比如基于一个请求参数。

        本地化解析器和拦截器定义在org.framework.web.servlet.i18n包下,使用普通的方式在应用上下文中配置即可。Spring中包含的本地化解析器有:

        AcceptHeaderLocaleResolver——它检查请求头中的accept-language信息(包含客户端操作系统的本地信息)

        CookieLocaleResolver——它检查客户端中可能存在的Cookie,看是否有本地化信息被指定,如有,就使用。你可以通过此本地化解析器的属性配置来cookie名和它的最大存活时间。

        SessionLocaleResolver——从会话中获取本地化信息。

        LocaleChangeInterceptor——通过给某个handler mapping设置LocaleChangeInterceptor就可以改变本地化信息。


        定义主题:主题是一些静态资源,如样式表和图片的集合。

        你必须要创建一个org.springframework.ui.context.ThemeSource接口的实现才能使用主题,WebApplicationContext接口继承ThemeSource但是它把这个责任委托给了一个专门的实现——ResourceBundleThemeSource。为了使用一个传统的ThemeSource实现或者配置ResourceBundleThemeSource的命名前缀,你可以通过在应用上下文中注册一个预置名为themeSource的bean。应用上下文自动探测以themeSource命名的bean并使用它。

        使用ResourceBundleThemeSource时,主题是被定义在一个简单的配置文件中的,配置文件中列出了标记这个主题的资源,如:

styleSheet=/themes/cool/style.css
background=/themes/cool/img/coolbg.jpg

        这些配置文件是从classpath的根目录加载的。ResourceBundleThemeSource使用标准的java资源绑定加载机制,允许完整的主题国际化。

        jsp中可以使用spring:theme标签

<link rel="stylesheet" href="<spring:theme code='styleSheet'>" type="text/css" />
...
<body style="background=<spring:theme code='background' />">
...

        

        使用主题

        和LocaleResolver一样,ThemeResolver会为特定请求找到一个主题,也能修改这个主题。DispatcherServlet会寻找一个以“themeResolver”命名的bean作为ThemeResolver的实现。Spring提供了ThemeResolver的几个实现类:

        FixedThemeResolver——通过defaultThemeName属性来选择一个固定的主题

        SessionThemeResolver——主题被维护在用户的HTTP会话中,每个会话只需设置一次。

        CookieThemeResolver——被选中的主题存储在客户端的Cookie中。

        Spring也提供了ThemeChangeInterceptor来为每个请求改变主题,通过一个简单的请求参数。

                


© 著作权归作者所有

AlphaGo
粉丝 0
博文 9
码字总数 7769
作品 0
程序员
私信 提问
1:spring mvc 概述

什么是mvc 什么是spring mvc Spring MVC 是一种基于 Java 的实现了 Web MVC 设计模式的请求驱动类型的轻量级 Web 框架, 即使用了MVC 架构模式的思想,将 web 层进行职责解耦, 基于请求驱动...

小杰java
2017/10/18
46
0
SpringMVC 9大组件概览

SpringMVC中的Servlet一共有三个层次,分别是HttpServletBean、FrameworkServlet和 DispatcherServlet。 HttpServletBean直接继承自java的HttpServlet,其作用是将Servlet中配置的参数设置到...

MrPei
2018/07/13
28
0
系列一、SpringMVC概念及测试案例

三层架构和MVC概念 一.、三层架构概念 咱们开发服务器端程序,一般都基于两种形式,一种C/S架构程序,一种B/S架构程序,使用Java语言基本上都是开发B/S架构的程序,B/S架构又分成了三层架构 ...

我叫小糖主
05/27
19
0
Spring 3.x Web MVC

本文demo下载地址:http://www.wisdomdd.cn/Wisdom/resource/articleDetail.htm?resourceId=1142 Spring 3.x Web MVC Spring mvc 特点 @ 功能组件划分细致 @ 灵活、强大 @ 设计思想优秀 MVC框......

智慧点点
2018/08/26
11
0
【补充】Hibernate validator使用和自定义validator及整合Spring MVC

Hibernate validator使用 导入validation-api-xxx.jar 以及 hibernate-validator-xxx.Final.jar 需要检查的java bean Entity.java 值校验的测试类 输出结果 这里有一个国际化的key值,国际化文...

jason_wu_2
2016/12/27
507
0

没有更多内容

加载失败,请刷新页面

加载更多

SpringBoot中 集成 redisTemplate 对 Redis 的操作(二)

SpringBoot中 集成 redisTemplate 对 Redis 的操作(二) List 类型的操作 1、 向列表左侧添加数据 Long leftPush = redisTemplate.opsForList().leftPush("name", name); 2、 向列表右......

TcWong
今天
7
0
排序––快速排序(二)

根据排序––快速排序(一)的描述,现准备写一个快速排序的主体框架: 1、首先需要设置一个枢轴元素即setPivot(int i); 2、然后需要与枢轴元素进行比较即int comparePivot(int j); 3、最后...

FAT_mt
昨天
4
0
mysql概览

学习知识,首先要有一个总体的认识。以下为mysql概览 1-架构图 2-Detail csdn |简书 | 头条 | SegmentFault 思否 | 掘金 | 开源中国 |

程序员深夜写bug
昨天
10
0
golang微服务框架go-micro 入门笔记2.2 micro工具之微应用利器micro web

micro web micro 功能非常强大,本文将详细阐述micro web 命令行的功能 阅读本文前你可能需要进行如下知识储备 golang分布式微服务框架go-micro 入门笔记1:搭建go-micro环境, golang微服务框架...

非正式解决方案
昨天
9
0
前端——使用base64编码在页面嵌入图片

因为页面中插入一个图片都要写明图片的路径——相对路径或者绝对路径。而除了具体的网站图片的图片地址,如果是在自己电脑文件夹里的图片,当我们的HTML文件在别人电脑上打开的时候图片则由于...

被毒打的程序猿
昨天
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部