在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 主题使用详解[转]的更多相关文章

  1. (转)Spring JdbcTemplate 方法详解

    Spring JdbcTemplate方法详解 文章来源:http://blog.csdn.net/dyllove98/article/details/7772463 JdbcTemplate主要提供 ...

  2. Spring jar包详解

    Spring jar包详解 org.springframework.aop ——Spring的面向切面编程,提供AOP(面向切面编程)的实现 org.springframework.asm——spri ...

  3. Spring——jar包详解(转)

    Spring——jar包详解 org.springframework.aop ——Spring的面向切面编程,提供AOP(面向切面编程)的实现 org.springframework.asm——spr ...

  4. Spring Boot异常处理详解

    在Spring MVC异常处理详解中,介绍了Spring MVC的异常处理体系,本文将讲解在此基础上Spring Boot为我们做了哪些工作.下图列出了Spring Boot中跟MVC异常处理相关的类 ...

  5. spring事务配置详解

    一.前言 好几天没有在对spring进行学习了,由于这几天在赶项目,没有什么时间闲下来继续学习,导致spring核心架构详解没有继续下去,在接下来的时间里面,会继续对spring的核心架构在继续进行学 ...

  6. spring注入参数详解

    spring注入参数详解 在Spring配置文件中, 用户不但可以将String, int等字面值注入到Bean中, 还可以将集合, Map等类型的数据注入到Bean中, 此外还可以注入配置文件中定义 ...

  7. Spring的lazy-init详解

    1.Spring中lazy-init详解ApplicationContext实现的默认行为就是在启动服务器时将所有singleton bean提前进行实例化(也就是依赖注入).提前实例化意味着作为初始 ...

  8. Spring Security Filter详解

    Spring Security Filter详解 汇总 Filter 作用 DelegatingFilterProxy Spring Security基于这个Filter建立拦截机制 Abstract ...

  9. Spring Boot 配置文件详解

    Spring Boot配置文件详解 Spring Boot提供了两种常用的配置文件,分别是properties文件和yml文件.他们的作用都是修改Spring Boot自动配置的默认值.相对于prop ...

随机推荐

  1. Android--ViewPager的无限轮播

    ViewPage_RadioButton实现带小圆点的无限轮播,效果还能凑合着用. 1.在ViewPage的监听里面这样处理 @Override public void onPageSelected( ...

  2. Java求职面试准备之常见算法

    最近在求职面试,整理一下常见面试算法: 对TestAlgorithms.java中方法的测试见JunitTestAlgorithms.java(引入了junit4) 1.TestAlgorithms. ...

  3. iOS学习之UITabBarController

    一.标签视图控制器——UITabBarController 1.UITabBarController的继承关系: @interface UITabBarController : UIViewContr ...

  4. iOS9之Bitcode

    Bitcode是被编译程序的一种中间形式的代码. 更新Xcode7后需要将”Build Settings”->”Enable Bitcode”设为NO,保证第三方库能真机运行项目.       ...

  5. iOS中远程推送实现—在Apple的生产环境上测试Push Notifications功能

    1.在“Provisioning Profiles”中点击“Add”按钮. 2.在“What type of provisioning profile do you need?”页面中选择“Distr ...

  6. mysql substring_index

    select * from tablename where substring_index(field1,'_',-1)=‘abc' #表中field1的值结构为123_abc

  7. 在windows上使用symfony创建简易的CMS系统(一)

    http://blog.csdn.net/kunshan_shenbin/article/details/7164675 参考自:http://xsymfony.801.cxne.net/forum. ...

  8. C# 字符串转换值类型

    bool status = int.TryParse(m_Judge(12)+"ds",out j); int iParse = int.Parse("4"); ...

  9. 007--VS2013 C++ 显示位图半透明化

    以后所有图片都放在根目录下: 如有另放,会特别注明 //全局变量HBITMAP bg,girl;HDC mdc; //起始坐标const int xstart = 50;const int ystar ...

  10. iOS 进阶 第十四天(0416)

    0416 注意调用关系,如下图: 就是initWithCoder:.initWithFrame.setup方法三元组