2011-08-04 35 views
6

我目前正试图在我的FreeMarker * .ftl中包含一个css文件。我也在我的servlet config xml文件中配置了一个资源文件夹。使用Spring 3 MVC链接/在FreeMarker中包含css

<mvc:resources mapping="/resources/**" location="/resources/" /> 

但是我如何从我的FreeMarker模板访问我的css文件?

我只是尝试以下,但没有成功。

<link href="/resources/css/style.css" rel="stylesheet" type="text/css" /> 

资源文件夹位于我的弹簧MVC 3.0应用程序的根目录中。

<servlet> 
    <servlet-name>springmvc</servlet-name> 
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
    <load-on-startup>1</load-on-startup> 
</servlet> 

<servlet-mapping> 
    <servlet-name>springmvc</servlet-name> 
    <url-pattern>/web/*</url-pattern> 
</servlet-mapping> 

我FreeMarker的文件都趴在模板文件夹:作为

/web 
    /resources 
    /img 
    /css 
    /WEB-INF 
    /templates 

我的servlet根定义。

+0

生成网站中的CSS文件链接是否有效?您的网站是部署在ROOT servlet上下文中还是处于不同的上下文中? – Chaquotay

+0

嗨,我的ROOT servlet上下文中的一般静态HTML文件使用相对路径。 –

回答

7

我发现了两种解决方案。一个带有弹簧宏,另一个没有在我的FreeMarker文件中。

最简单的方法就是使用它,而宏:

<link rel="stylesheet" type="text/css" 
href="/springmvc/resources/css/style.css" /> 

在这个解决方案,我必须定义的完整路径。

通过使用弹簧宏,您必须将spring.ftl放置到您的模板目录中,并将其包含在您喜欢使用它的每个FreeMarker模板中。

<#import "spring.ftl" as spring /> 
<html> 
<head> 
<title>...</title> 
<link rel="stylesheet" type="text/css" 
    href="<@spring.url '/resources/css/style.css'/>"/> 
... 

春宏还可以用于其他的事情this blog给出了一个很好的概述。

+2

这就是我所怀疑的。恕我直言,使用spring.url宏是更好的解决方案,因为它更灵活。 – Chaquotay

1

你可以试试这个,

<link rel="stylesheet" type="text/css" href="<c:url value="/"/>resources/css/style.css" /> 

在运行时该代码将返回确切路径。

+0

这可以在JSP中使用jstl,而不是在FTL中。 – ScottM