6

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

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

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

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

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

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

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

我的 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>

我的 FreeMarker 文件位于模板文件夹中。

4

2 回答 2

8

我找到了两种解决方案。我的 FreeMarker 文件中一个带有弹簧宏,一个没有。

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

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

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

通过使用 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'/>"/>
...

spring 宏也可以用于其他事情,这个博客给出了一个很好的概述。

于 2011-08-05T09:07:26.803 回答
1

你可以试试这个

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

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

于 2013-01-08T14:02:34.043 回答