spring 主题使用详解[转]
在common_include_v2.jsp文件中,spring主题的使用:
<link href="${staticPath }/<spring:theme code='styleSheet'/>/jquery-ui/jquery-ui-1.9.0.css" rel="stylesheet" type="text/css" />
新框架中为了满足对不同用户使用不同主题而特意引入,此用法导致问题就是项目中无法对jsp页面进行直接访问,既然出现了问题,那就得好好深入了解,然后再想其他办法解决。
框架中使用theme所涉及的相关配置文件:
在src\web.xml中配置:
<servlet>
<servlet-name>springMVC</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springMVC</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
在springMVC-serlvet.xml中配置:
<bean id="themeResolver" class="org.springframework.web.servlet.theme.CookieThemeResolver" >
<property name="defaultThemeName" value="default" />
</bean> <bean id="themeSource" class="org.springframework.ui.context.support.ResourceBundleThemeSource">
<property name="basenamePrefix" value="themes."></property>
</bean>
------------------------------------------------------------------------------------------------------------------------------------
今天主要介绍下关于spring下主题(Theme)的内容,之前去网上搜索下了相关内容,发现其使用介绍都很简单,我这里详细介绍下如何使用spring的主题。
1、ThemeSource
ThemeSource,说简单点,主要用于如何定位相应的主题资源文件。默认状态下,其具体实现类ResourceBunldeThemeSource是在类路径根目录下查找相应的资源文件,不过可以通过配置器属性basenamePrefix来制定。
<bean id="themeSource" class="org.springframework.ui.context.support.ResourceBundleThemeSource">
<property name="basenamePrefix" value="com.jack.themes."></property>
</bean>
这样,DispatcherServlet就会下com.jack.themes包下进行查找资源文件。
2、ThemeResolver
ThemeResolver的功能和ViewResolver、LocaleResolver类似,主要根据配置返回Theme。Spring默认提供三个ThemeResolver具体的类:
(1).FixedThemeResolver
(2).SessionThemeResolver
(3).CookieThemeResolver
三个类的区别直接可以通过其名字就可以看出,fix表示固定,Session即会话,而cookie就是利用cookie了。以下我一一列出使用例子
2.1 FixedThemeResolver
<bean id="themeResolver" class="org.springframework.web.servlet.theme.FixedThemeResolver">
<property name="defaultThemeName" value="summer"/>
</bean>
2.2 SessionThemeResolver
<bean id="themeResolver" class="org.springframework.web.servlet.theme.SessionThemeResolver">
<property name="defaultThemeName" value="summer"/>
</bean>
设置主题名称为每个用户在HttpSession内保存
<bean id="themeResolver" class="org.springframework.web.servlet.theme.CookieThemeResolver">
<property name="defaultThemeName" value="summer"/>
</bean>
主题保存在Cookie中。
3、ThemeChangeInterceptor
如果需要根据用户请求来改变主题,则需要使用ThemeChangeInterceptor拦截器了。
<bean id="themeChangeInterceptor" class="org.springframework.web.servlet.theme.ThemeChangeInterceptor">
<property name="paramName" value="themeName"></property>
</bean>
其中设置用户请求参数名为themeName,即url为?themeName=具体的主题名称。此外,还需要在handlerMapping中配置拦截器
<bean id="handlerMapping" class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping">
<property name="interceptors" >
<list>
<ref local="themeChangeInterceptor"/>
</list>
</property>
</bean>
这样,当ThemeResolver为CookieThemeResolver或者SessionThemeResolver时,可以通过url的参数设置来制定主题。
http://....../?themeName=summer,则主题为summer.properties文件
http://....../?themeName=winter,则主题为winter.properties文件。
4.主题文件
主题文件为主题名.properties格式,具体其内容则是一些key-value对,表示一些css或者图片、文字等。如
welcome.message=\u8FD9\u662F\u590F\u5929\uFF0C\u597D\u70ED\u554A\uFF01
hello.message=helloWorld!
需要注意的是其中的中文需要进行转码。
5.视图页面
通过spring的tags可以将主题内容进行显示
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<spring:theme code="welcome.message"></spring:theme>
这样,打开具体页面时就会根据当前主题显示相应内容了。
------------------------------------------------------------------------------------------------------------------------------------
以上文章是网上资料,原文地址:http://www.iteye.com/topic/604484
参考资料:
http://docs.spring.io/spring/docs/3.0.0.M3/reference/html/ch16s07.html
spring 主题使用详解[转]的更多相关文章
- (转)Spring JdbcTemplate 方法详解
Spring JdbcTemplate方法详解 文章来源:http://blog.csdn.net/dyllove98/article/details/7772463 JdbcTemplate主要提供 ...
- Spring jar包详解
Spring jar包详解 org.springframework.aop ——Spring的面向切面编程,提供AOP(面向切面编程)的实现 org.springframework.asm——spri ...
- Spring——jar包详解(转)
Spring——jar包详解 org.springframework.aop ——Spring的面向切面编程,提供AOP(面向切面编程)的实现 org.springframework.asm——spr ...
- Spring Boot异常处理详解
在Spring MVC异常处理详解中,介绍了Spring MVC的异常处理体系,本文将讲解在此基础上Spring Boot为我们做了哪些工作.下图列出了Spring Boot中跟MVC异常处理相关的类 ...
- spring事务配置详解
一.前言 好几天没有在对spring进行学习了,由于这几天在赶项目,没有什么时间闲下来继续学习,导致spring核心架构详解没有继续下去,在接下来的时间里面,会继续对spring的核心架构在继续进行学 ...
- spring注入参数详解
spring注入参数详解 在Spring配置文件中, 用户不但可以将String, int等字面值注入到Bean中, 还可以将集合, Map等类型的数据注入到Bean中, 此外还可以注入配置文件中定义 ...
- Spring的lazy-init详解
1.Spring中lazy-init详解ApplicationContext实现的默认行为就是在启动服务器时将所有singleton bean提前进行实例化(也就是依赖注入).提前实例化意味着作为初始 ...
- Spring Security Filter详解
Spring Security Filter详解 汇总 Filter 作用 DelegatingFilterProxy Spring Security基于这个Filter建立拦截机制 Abstract ...
- Spring Boot 配置文件详解
Spring Boot配置文件详解 Spring Boot提供了两种常用的配置文件,分别是properties文件和yml文件.他们的作用都是修改Spring Boot自动配置的默认值.相对于prop ...
随机推荐
- Android--ViewPager的无限轮播
ViewPage_RadioButton实现带小圆点的无限轮播,效果还能凑合着用. 1.在ViewPage的监听里面这样处理 @Override public void onPageSelected( ...
- Java求职面试准备之常见算法
最近在求职面试,整理一下常见面试算法: 对TestAlgorithms.java中方法的测试见JunitTestAlgorithms.java(引入了junit4) 1.TestAlgorithms. ...
- iOS学习之UITabBarController
一.标签视图控制器——UITabBarController 1.UITabBarController的继承关系: @interface UITabBarController : UIViewContr ...
- iOS9之Bitcode
Bitcode是被编译程序的一种中间形式的代码. 更新Xcode7后需要将”Build Settings”->”Enable Bitcode”设为NO,保证第三方库能真机运行项目. ...
- iOS中远程推送实现—在Apple的生产环境上测试Push Notifications功能
1.在“Provisioning Profiles”中点击“Add”按钮. 2.在“What type of provisioning profile do you need?”页面中选择“Distr ...
- mysql substring_index
select * from tablename where substring_index(field1,'_',-1)=‘abc' #表中field1的值结构为123_abc
- 在windows上使用symfony创建简易的CMS系统(一)
http://blog.csdn.net/kunshan_shenbin/article/details/7164675 参考自:http://xsymfony.801.cxne.net/forum. ...
- C# 字符串转换值类型
bool status = int.TryParse(m_Judge(12)+"ds",out j); int iParse = int.Parse("4"); ...
- 007--VS2013 C++ 显示位图半透明化
以后所有图片都放在根目录下: 如有另放,会特别注明 //全局变量HBITMAP bg,girl;HDC mdc; //起始坐标const int xstart = 50;const int ystar ...
- iOS 进阶 第十四天(0416)
0416 注意调用关系,如下图: 就是initWithCoder:.initWithFrame.setup方法三元组