13、Spring MVC 之 Using themes

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.css
background=/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

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

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值