Spring4.x官方参考文档中文版——第21章 Web MVC框架(22)
来源:互联网 发布:linux运维工程师培训 编辑:程序博客网 时间:2024/04/27 22:07
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片段就是使用了在前面例子中定义的主题:
<%@ 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中储存。
Spring也提供了ThemeChangeInterceptor(主题变更拦截器),它允许在每一个请求中,使用一个很简单的请求参数来变更主题。
- Spring4.x官方参考文档中文版——第21章 Web MVC框架(22)
- Spring4.x官方参考文档中文版——第21章 Web MVC框架(21)
- Spring4.x官方参考文档中文版——第21章 Web MVC框架(16)
- Spring4.x官方参考文档中文版——第21章 Web MVC框架(17)
- Spring4.x官方参考文档中文版——第21章 Web MVC框架(18)
- Spring4.x官方参考文档中文版——第21章 Web MVC框架(19)
- Spring4.x官方参考文档中文版——第21章 Web MVC框架(20)
- Spring4.x官方参考文档中文版——第21章 Web MVC框架(23)
- Spring4.x官方参考文档中文版——第21章 Web MVC框架(24)
- Spring4.x官方参考文档中文版——第21章 Web MVC框架(25)
- Spring4.x官方参考文档中文版——第21章 Web MVC框架(27)
- Spring4.x官方参考文档中文版——第21章 Web MVC框架(28)
- Spring4.x官方参考文档中文版——第21章 Web MVC框架(29)
- Spring4.x官方参考文档中文版——第21章 Web MVC框架(30)
- Spring4.x官方参考文档中文版——第21章 Web MVC框架(31)
- Spring4.x官方参考文档中文版——第21章 Web MVC框架(32)
- Spring4.x官方参考文档中文版——第21章 Web MVC框架(33)
- Spring4.x官方参考文档中文版——第21章 Web MVC框架(34)
- maven 简单入门(转)
- 自定义下拉刷新
- C++中标准类string常用示例
- hdoj 2199 Can you solve this equation? 【二分查找】
- 『.NET Core CLI工具文档』(六)dotnet 命令
- Spring4.x官方参考文档中文版——第21章 Web MVC框架(22)
- go 语言学习历程
- 虚拟机上ubuntu遇到的问题
- 2016 Personal Training #6 Div.2 G
- 触摸java常量池
- POJ 2299 <离散化+树状数组求逆序数对>
- Session for PHP
- 数据结构---二叉树的前序、中序、后序遍历的递归和非递归 实现(C++)
- ASI实现文件断点续传