使用Spring 3 MVC在FreeMarker中链接/包含css

ich*_*rin 6 freemarker spring-mvc spring-3

我目前正在尝试在我的FreeMarker*.ftl中包含一个css文件.我还在servlet config xml文件中配置了一个资源文件夹.

<mvc:resources mapping="/resources/**" location="/resources/" />
Run Code Online (Sandbox Code Playgroud)

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

我只是尝试了以下但没有成功.

<link href="/resources/css/style.css" rel="stylesheet"  type="text/css" />
Run Code Online (Sandbox Code Playgroud)

资源文件夹位于我的spring MVC 3.0应用程序的根目录中.

/web
  /resources
    /img
    /css
  /WEB-INF
    /templates
Run Code Online (Sandbox Code Playgroud)

我的Servlet根目录定义为:

<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>
Run Code Online (Sandbox Code Playgroud)

我的FreeMarker文件位于templates文件夹中.

ich*_*rin 8

我找到了两个解决方案.一个有Spring宏,一个没有我的FreeMarker文件.

最简单的方法是在没有宏的情况下使用它:

<link rel="stylesheet" type="text/css" 
href="/springmvc/resources/css/style.css" />
Run Code Online (Sandbox Code Playgroud)

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

通过使用spring宏,您必须将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'/>"/>
...
Run Code Online (Sandbox Code Playgroud)

Spring宏也可用于本博客提供的其他内容.

  • 这就是我所怀疑的.使用spring.url宏的IMHO是更好的解决方案,因为它更灵活. (2认同)