论坛首页 Java企业应用论坛

spring 主题使用详解

浏览 8668 次
精华帖 (0) :: 良好帖 (1) :: 新手帖 (2) :: 隐藏帖 (2)
作者 正文
   发表时间:2010-02-28  

  今天主要介绍下关于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>

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

   2.2 SessionThemeResolver

  <bean id="themeResolver" class="org.springframework.web.servlet.theme.SessionThemeResolver">
        <property name="defaultThemeName" value="summer"/>
   </bean>

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

  2.3 CookieThemeResolver

  <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>

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

   发表时间:2010-03-01  
spring的主题确实很少用,因为文档少,楼主写的内容为上手提供了很好的指导
0 请登录后投票
   发表时间:2010-03-02  
学习,那里还有spring主题的资料啊?
0 请登录后投票
   发表时间:2010-03-02  
还没用过 在这里学习了
0 请登录后投票
   发表时间:2010-03-03  
对于主题这块 spring中资料确实是少之又少,并且我对spring主题的使用基本上没有使用过,今天在楼主的介绍下明白了一些,还有一些需要看书慢慢消化。
0 请登录后投票
   发表时间:2010-12-15  
ckn126 写道
对于主题这块 spring中资料确实是少之又少,并且我对spring主题的使用基本上没有使用过,今天在楼主的介绍下明白了一些,还有一些需要看书慢慢消化。

最近在用这方面的资料和demo都不多 谢谢 楼主了
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics