Spring4.x官方参考文档中文版——第21章 Web MVC框架(22)
2016-07-27 23:51
417 查看
21.9 主题(theme)的使用
21.9.1 主题概况
你能够使用Spring Web MVC框架在你的应用中设置全局生效的主题,从而提升用户的体验。主题是那些影响着应用里视觉样式的静态资源(一般是表的样式和图像)的集合。
21.9.2 主题的定义
为了在你的web应用中使用主题,你必须实现org.springframework.ui.context.ThemeSource接口。WebApplicationContext接口继承自ThemeSource,但是它是委派给负责从classpath的根路径中读取属性(properties)文件的org.springframework.ui.context.support.ResourceBundleThemeSource的实现来处理。为了使用自定的ThemeSource,或者去配置ResourceBundleThemeSource的基础名称的前缀,你能在应用的context中,themeSource这个保留的名称中注册一个bean来实现。Web应用的context会自动检测并使用相应名字的bean。
当使用ResourceBundleThemeSource时,主题是在一个简易的属性文件中被定义的。这个属性文件列出了组成这个主题的资源列表。见下例:
styleSheet=/themes/cool/style.css
background=/themes/cool/img/coolBg.jpg
属性的键就是那些代表着从视图代码中,被主题化的元素的名字。对于一个JSP,一般来说就是使用spring:theme这个自定的标签,这个标签与spring:message标签是很相似的。下面的JSP片段就是使用了在前面例子中定义的主题:
默认情况下,ResourceBundleThemeSource使用一个空的base name(基础名)前缀。这样,属性文件就从classpath的根路径下读取出来了。因此,你可以在classpath根路径下的地方放置cool.properties主题的定义文件,比如,放在/WEB-INF/classes中。ResourceBundleThemeSource使用java基本的资源绑定读取机制,可以完全支持国际化的主题。比如,我们可能有一个/WEB-INF/classes/cool_n1.properties文件,它代表着拥有一个印着荷兰语文本的特殊的背景图片。
21.9.3 主题解析器
定义了主题之后,就像先前定义的章节那样,你能够决定使用哪一个主题。DispatcherServlet会从叫做themeResolver的bean中寻找所使用的对应ThemeResolver的实现。主题解析器的运作非常像LocaleResolver(地区解析器)。它会检测特定请求需要使用的对应主题,并且也能改变请求的主题。下面的表是Spring所提供的主题解析器:
表21.5. ThemeResolver(主题解析器)的实现
Spring也提供了ThemeChangeInterceptor(主题变更拦截器),它允许在每一个请求中,使用一个很简单的请求参数来变更主题。
21.9.1 主题概况
你能够使用Spring Web MVC框架在你的应用中设置全局生效的主题,从而提升用户的体验。主题是那些影响着应用里视觉样式的静态资源(一般是表的样式和图像)的集合。
21.9.2 主题的定义
为了在你的web应用中使用主题,你必须实现org.springframework.ui.context.ThemeSource接口。WebApplicationContext接口继承自ThemeSource,但是它是委派给负责从classpath的根路径中读取属性(properties)文件的org.springframework.ui.context.support.ResourceBundleThemeSource的实现来处理。为了使用自定的ThemeSource,或者去配置ResourceBundleThemeSource的基础名称的前缀,你能在应用的context中,themeSource这个保留的名称中注册一个bean来实现。Web应用的context会自动检测并使用相应名字的bean。
当使用ResourceBundleThemeSource时,主题是在一个简易的属性文件中被定义的。这个属性文件列出了组成这个主题的资源列表。见下例:
styleSheet=/themes/cool/style.css
background=/themes/cool/img/coolBg.jpg
属性的键就是那些代表着从视图代码中,被主题化的元素的名字。对于一个JSP,一般来说就是使用spring:theme这个自定的标签,这个标签与spring:message标签是很相似的。下面的JSP片段就是使用了在前面例子中定义的主题:
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%> <html> <head> <link rel="stylesheet" href="<spring:theme code=''styleSheet''/>" type="text/css"/> </head> <body style="background=<spring:theme code=''background''/>"> ... </body> </html>
默认情况下,ResourceBundleThemeSource使用一个空的base name(基础名)前缀。这样,属性文件就从classpath的根路径下读取出来了。因此,你可以在classpath根路径下的地方放置cool.properties主题的定义文件,比如,放在/WEB-INF/classes中。ResourceBundleThemeSource使用java基本的资源绑定读取机制,可以完全支持国际化的主题。比如,我们可能有一个/WEB-INF/classes/cool_n1.properties文件,它代表着拥有一个印着荷兰语文本的特殊的背景图片。
21.9.3 主题解析器
定义了主题之后,就像先前定义的章节那样,你能够决定使用哪一个主题。DispatcherServlet会从叫做themeResolver的bean中寻找所使用的对应ThemeResolver的实现。主题解析器的运作非常像LocaleResolver(地区解析器)。它会检测特定请求需要使用的对应主题,并且也能改变请求的主题。下面的表是Spring所提供的主题解析器:
表21.5. ThemeResolver(主题解析器)的实现
类 | 描述 |
FixedThemeResolver (固定主题解析器) | 通过设置defaultThemeName属性,来选择一个固定的主题。 |
SessionThemeResolver (session主题解析器) | 在用户的HTTP session中维持的主题。它只需在每个session中设置一次。但是并不在session间保留。 |
CookieThemeResolver (cookie主题解析器) | 被选中的主题会在客户端的cookie中储存。 |
相关文章推荐
- 插件管理框架 for Delphi(一)
- 使用CSS框架布局的缺点和优点小结
- 一起动手编写Android图片加载框架
- 基于.NET平台常用的框架和开源程序整理
- 列举PHP的Yii 2框架的开发优势
- Windows窗体的.Net框架绘图技术实现方法
- 浅谈JavaScript 框架分类
- 轻量级javascript 框架Backbone使用指南
- javascript实现框架高度随内容改变的方法
- JS刷新框架外页面七种实现代码
- 超赞的动手创建JavaScript框架的详细教程
- 深入探讨前端框架react
- js验证框架实现代码分享
- jQuery的框架介绍
- 简单介绍不用库(框架)自己写ajax
- 利用ASP.NET MVC+EasyUI+SqlServer搭建企业开发框架
- asp.net4.0框架下验证机制失效的原因及处理办法
- 插件管理框架 for Delphi(二)
- 零基础学习AJAX之AJAX框架
- Ajax 框架学习笔记