分享

spring 主题使用详解

 江江385 2013-05-22

今天主要介绍下关于spring下主题(Theme)的内容,之前去网上搜索下了相关内容,发现其使用介绍都很简单,我这里详细介绍下如何使用spring的主题。

 

 1、ThemeSource

  ThemeSource,说简单点,主要用于如何定位相应的主题资源文件。默认状态下,其具体实现类ResourceBunldeThemeSource是在类路径根目录下查找相应的资源文件,不过可以通过配置器属性basenamePrefix来制定。

Xml代码  收藏代码
  1. <bean id="themeSource" class="org.springframework.ui.context.support.ResourceBundleThemeSource">  
  2.        <property name="basenamePrefix" value="com.jack.themes."></property>  
  3.     </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

Xml代码  收藏代码
  1. <bean id="themeResolver" class="org.springframework.web.servlet.theme.FixedThemeResolver">  
  2.    <property name="defaultThemeName" value="summer"/>  
  3.  </bean>  

 设置主题文件为summer.properties,在整个项目内固定不变。

   2.2 SessionThemeResolver

Java代码  收藏代码
  1. <bean id="themeResolver" class="org.springframework.web.servlet.theme.SessionThemeResolver">  
  2.       <property name="defaultThemeName" value="summer"/>  
  3.  </bean>  

 设置主题名称为每个用户在HttpSession内保存。

  2.3 CookieThemeResolver

Xml代码  收藏代码
  1. <bean id="themeResolver" class="org.springframework.web.servlet.theme.CookieThemeResolver">  
  2.       <property name="defaultThemeName" value="summer"/>  
  3.  </bean>  

 主题保存在Cookie中。

3、ThemeChangeInterceptor

   如果需要根据用户请求来改变主题,则需要使用ThemeChangeInterceptor拦截器了。

Xml代码  收藏代码
  1. <bean id="themeChangeInterceptor" class="org.springframework.web.servlet.theme.ThemeChangeInterceptor">  
  2.          <property name="paramName" value="themeName"></property>  
  3.   </bean>                       

 其中设置用户请求参数名为themeName,即url为?themeName=具体的主题名称。此外,还需要在handlerMapping中配置拦截器

Xml代码  收藏代码
  1. <bean id="handlerMapping" class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping">  
  2.    <property name="interceptors" >  
  3.       <list>  
  4.          <ref local="themeChangeInterceptor"/>  
  5.       </list>  
  6.    </property>  
  7.  </bean>        

 这样,当ThemeResolver为CookieThemeResolver或者SessionThemeResolver时,可以通过url的参数设置来制定主题。

  http://....../?themeName=summer,则主题为summer.properties文件

  http://....../?themeName=winter,则主题为winter.properties文件。

4.主题文件

  主题文件为主题名.properties格式,具体其内容则是一些key-value对,表示一些css或者图片、文字等。如

Html代码  收藏代码
  1. welcome.message=\u8FD9\u662F\u590F\u5929\uFF0C\u597D\u70ED\u554A\uFF01  
  2. hello.message=helloWorld!  

 需要注意的是其中的中文需要进行转码。

5.视图页面

 通过spring的tags可以将主题内容进行显示

Html代码  收藏代码
  1. <%@ taglib  prefix="spring" uri="http://www./tags" %>  
  2.  <spring:theme code="welcome.message"></spring:theme>  

 这样,打开具体页面时就会根据当前主题显示相应内容了。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多