0

我被困在一件非常痛苦的事情上。我正在尝试使用 Spring WebMVC 的主题。

这是我的 web-context.xml 文件的结尾:

<beans:bean id="themeChangeInterceptor" class="org.springframework.web.servlet.theme.ThemeChangeInterceptor" >
    <beans:property name="paramName" value="theme" />
</beans:bean>
<beans:bean id="themeSource" class="org.springframework.ui.context.support.ResourceBundleThemeSource">
    <beans:property name="basenamePrefix" value="theme-" />
</beans:bean>
<beans:bean id="themeResolver" class="org.springframework.web.servlet.theme.CookieThemeResolver" >
    <beans:property name="defaultThemeName" value="default" />
</beans:bean>
<beans:bean id="handlerMapping" class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping">
    <beans:property name="interceptors">
        <beans:list>
            <beans:ref bean="themeChangeInterceptor" />
        </beans:list>
    </beans:property>
</beans:bean>

在我的头文件中,我有类似的内容:

<span style="float: right">
        <a href="?theme=default">Default</a>
        |
        <a href="?theme=other">Other</a>
</span>

最后,我的 html 头有(在所有视图中导入):

<link rel="stylesheet" href="<spring:theme code="css"/>" type="text/css" />

我在 src/main/resources 中获得了两个属性文件,这导致了我的 css。例如在 theme-default.properties 中,有:

css=static/css/dev.css

我的 CSS 在 src/webapp/static/css/ 中。当我第一次加载网站时,主题是默认的,所以我认为主题解析器正确找到了属性文件和 css。但是当我点击标题中的默认或其他时,什么也没有发生。

你知道问题出在哪里吗?

非常感谢您!奥利维尔。

4

2 回答 2

2

我认为您错误地注册了拦截器。如果您通过 using 配置 Spring-MVC,<mvc:annotation-driven/>则单独的handlerMapping将不起作用,因为默认 handlerMapping 也由自定义mvc命名空间注册。尝试以这种方式注册它:

<mvc:interceptors>
    <ref bean="themeChangeInterceptor"/>
</mvc:interceptors>
于 2012-09-12T19:38:32.237 回答
0

你应该有<mvc:interceptors>声明。你的 ThemeChangeInterceptor bean 应该在那里

<mvc:interceptors>
        <beans:bean class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor">
            <beans:property name="paramName" value="lang" />
        </beans:bean>
        <beans:bean class="org.springframework.web.servlet.theme.ThemeChangeInterceptor">
            <beans:property name="paramName" value="theme" />
        </beans:bean>
</mvc:interceptors>
于 2012-10-03T02:10:11.413 回答