css 文件在 Spring Theme 模块中不起作用。属性文件已正确加载,但 css 无法正常工作
Posted
技术标签:
【中文标题】css 文件在 Spring Theme 模块中不起作用。属性文件已正确加载,但 css 无法正常工作【英文标题】:css file is not working in Spring Theme module. properties files are loaded properly but css are not working 【发布时间】:2013-06-18 16:50:50 【问题描述】:我配置了我的配置文件,即。使用以下 bean 的主题的 dispatcher-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>
我添加了 3 个属性 如源码目录下的theme-black.properties,theme-blue.properties,theme-default.properties。
在每个属性文件中,我添加了如下键值对
style=style/blue.css
style=style/black.css
style=style/default.css
我将 style 文件夹放在 Web-Content 下。 问题是这个 ResourceBundleThemeSource 已成功加载属性文件,但无法加载 css 文件。
在 JSP 文件中我添加了以下代码
<link rel="stylesheet" href="<spring:theme code='style'/>"
type="text/css" />
为了改变
<span style="float: right;"> <a href="?theme=default">
default</a> | <a href="?theme=blue">blue</a> | <a
href="?theme=black">black</a>
</span>
如果有任何问题请帮助我........请请>提前致谢
【问题讨论】:
【参考方案1】:我没有使用 Spring 主题支持的经验,但是我发现您的 URL 中有一个小错误。
首先,您的网址是相对的。您应该始终拥有绝对 URL(以 /
开头)。
其次,在使用任何 URL 时,应使用<c:url>
或<spring:url>
,以便使用正确的上下文前缀:
<spring:url var="cssUrl">
<jsp:attribute name="value"><spring:theme code="style"/></jsp:attribute>
</spring:url>
【讨论】:
嗨,帕维尔,感谢您的快速回复,但我没有收到您的回复。我相信我的代码中没有使用任何网址。如果你知道可以请你指导我。谢谢....href="<spring:theme code="style"/>"
- 这里您使用的是 CSS 文件的 URL。您至少应该在属性中添加前导斜杠 /
。通过 URL 标签处理它是可选的,取决于您的用例。如果 CSS 文件始终是最终 WAR 的一部分,您应该对其进行处理。如果是外部引用或者是对另一个上下文的引用,情况就复杂了一点。【参考方案2】:
不知道你有没有把 bean themeChangeInterceptor
ref 放到 bean DefaultAnnotationHandlerMapping
下。如果你已经这样做了,那么请从那里删除它并将其放在<mvc:interceptors>
tag 中,如下所示
<mvc:interceptors>
<ref bean="themeChangeInterceptor" />
</mvc:interceptors>
【讨论】:
【参考方案3】:这就像指定静态内容的位置(在你application-config.xml
)以及访问它们的路径一样简单:
<mvc:resources mapping="/resources/**" location="/resources/"/>
接下来您编辑主题属性文件:
style=resources/style/blue.css
并将blue.css
文件放入:webapp/resources/themes
现在您可以使用以下命令加载css
文件:
"resources/themes/blue.css"
in href
或者在code
的spring:theme
标签中使用style
。
这对我有用。
【讨论】:
以上是关于css 文件在 Spring Theme 模块中不起作用。属性文件已正确加载,但 css 无法正常工作的主要内容,如果未能解决你的问题,请参考以下文章
浏览器无法从 magento 皮肤文件夹加载 theme.css.php 文件
如何在 bootstrap 3 中使用 bootstrap-theme.css?