13、Spring MVC 之 Using themes

来源:互联网 发布:软件测试文档模板 编辑:程序博客网 时间:2024/06/05 09:33

1、themes概述

你可以使用Spring Web MVC框架的整体外观主题设定你的应用程序,从而提高用户体验。一个theme是静态资源的集合,通常样式表和图片,影响应用程序的视觉风格。

2、定义themes

要在你的web应用程序中使用的主题,必须建立一个实现org.springframework.ui.context.ThemeSource接口。这个WebApplicationContext接口扩展ThemeSource但将责任委托给专门的实现。默认代理实现是org.springframework.ui.context.support.ResourceBundleThemeSource,它负责加载定义在classpath根据目录下properties文件。你也可以自定义ThemeSource实现或者配置ResourceBundleThemeSource的basenamePrefix属性。你可以在application context通过name为themeSource来注册ThemeSource这个bean.web应用程序上下文自动检测一个bean的名称和使用它。

当使用ResourceBundleThemeSource,主题可以一个简单的属性文件中定义。属性文件列表的资源构成了主题.这里有一个例子:

styleSheet=/themes/cool/style.cssbackground=/themes/cool/img/coolBg.jpg

properties的key值是页面代码引用主题元素的名称。对于一个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使用一个空的基本名称前缀。这样的话就会加载classpath根目录下的properties文件。因此,你将cool.properties主题属性定义在类路径的根目录,例如在/WEB-INF/classesResourceBundleThemeSourceuses使用标准Java资源包加载机制,允许全面国际化的主题。例如我们能够使用/WEB-INF/classes/cool_nl.properties引用一个特殊的背景图像与荷兰文字。

3、Theme解析

当你按照上个章节定义theme,你决定使用哪个theme。DispatcherServlet会寻找一个叫themeResolver的bean来找出使用ThemeResolver实现。theme解析器几乎和LocaleResolver解析器以相同的方式工作。它检测到的主题使用特定的请求并且可以改变请求的主题。下面是Spring提供的theme解析器:

Table. ThemeResolver implementations

Class Description FixedThemeResolver 通过设置defaultThemeName属性,选择确定的theme SessionThemeResolver 主题是保存在用户的HTTP会话。它只需要为每个会话设置一次,但不同的会话不会持续 CookieThemeResolve 选择储存在客户端的cookie中的theme

Spring同样提供ThemeChangeInterceptor允许通过对每个请求添加一个简单的请求参数来改变主题.

因为水平有限,翻译不足之处还望见谅。
原文地址:spring-framework-reference-4.2.6.RELEASE

0 0
原创粉丝点击