-1

How can I get list of themes by programming in Theme Resolver Example of Spring MVC?

4

2 回答 2

0

以下配置您需要在 xml 文件中进行。

<!--  Configuration for Theme Selection -->
    <!-- Note: property files for theme-XXX should be exist into build path.should be in:/WEB-INF/classes/ -->
        <bean id="themeSource"
        class="org.springframework.ui.context.support.ResourceBundleThemeSource">
            <property name="basenamePrefix"  value="theme-"/>
        </bean>

        <bean id="themeChangeInterceptor"
            class="org.springframework.web.servlet.theme.ThemeChangeInterceptor">
            <property name="paramName" value="theme" />
        </bean>

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

        <bean id="handlerMapping"
            class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping">
            <property name="interceptors">
                <list>
                    <ref bean="themeChangeInterceptor" />
                </list>
            </property>
        </bean>

然后在您的属性文件中,您需要为相应主题指定 CSS 文件的路径。

css.style=/Web/resources/css/style.css

希望这对您有所帮助。

于 2012-10-16T10:25:30.560 回答
0

您应该先用谷歌搜索并自己尝试,然后在遇到任何异常时提出任何问题。

为此,我们将以下代码添加到 spring-servlet.xml 文件中。

<bean id="themeSource"    class="org.springframework.ui.context.support.ResourceBundleThemeSource">         
<property name="basenamePrefix" value="theme-" /> 
</bean>  

<!-- Theme Change Interceptor and Resolver definition -->
<bean id="themeChangeInterceptor"    class="org.springframework.web.servlet.theme.ThemeChangeInterceptor">     
<property name="paramName" value="theme" /> 
</bean> 

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

<bean id="handlerMapping"    class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping">     
<property name="interceptors">         
<list>             
<ref bean="localeChangeInterceptor" />             
<ref bean="themeChangeInterceptor" />         
</list>     
</property> 
</bean> 

在上面的配置中,首先我们添加了 themeSource bean。请注意,这个 bean 是类 ResourceBundleThemeSource 的一个实例,我们还指定了一个属性 basenamePrefix,其值为“theme-”。ResourceBundleThemeSource 类将加载包含以前缀“theme-”开头的主题定义的属性文件。因此,如果我们在项目中定义了 3 个新主题(默认、黑色和蓝色),那么我们将创建 3 个属性文件,同时具有某些配置属性。这些文件也将放置在项目类路径下。

接下来,我们定义了一个拦截器 bean themeChangeInterceptor,它是类 org.springframework.web.servlet.theme.ThemeChangeInterceptor 的一个实例。还要注意这里我们已经指定了一个带有值主题的属性 paramName。每当使用具有不同值的参数“theme”发出请求时,都会调用此拦截器。

一旦 themeChangeInterceptor 拦截了主题中的变化,这些变化就会使用类 org.springframework.web.servlet.theme.CookieThemeResolver 存储在 cookie 中。我们已经在 spring-servlet.xml 配置文件中配置了这个类。另请注意,我们已使用此 bean 指定默认主题名称。

我们几乎完成了更改,剩下的最后一点是添加一个功能,供用户从 UI 中选择主题。为此,我们将更改 header.jsp 文件并添加 3 个具有不同主题的链接。用户可以单击任何此链接并更改 web 应用程序的主题。

这整个信息可以在这个链接http://viralpatel.net/blogs/spring-3-mvc-themes-tutorial-example/找到

希望这会帮助你。

于 2014-04-07T05:43:15.360 回答