2011-08-04 7 views
6

Obecnie próbuję dołączyć plik css w moim FreeMarker * .ftl. Mam również skonfigurowany folder zasobów w moim pliku xml config serwletu.Link/include css w FreeMarker przy użyciu Spring 3 MVC

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

Ale jak mogę uzyskać dostęp do mojego pliku css z mojego szablonu FreeMarker?

Po prostu próbowałem następujących, ale bez powodzenia.

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

Folder zasobów znajduje się w katalogu głównym mojej aplikacji MVC 3.0.

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

Mój korzeń Servlet jest zdefiniowany jako:

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

Moje pliki FreeMarker leżą w folderze szablonów.

+0

Czy link do pliku CSS w wygenerowanej witrynie działa? Czy witryna jest wdrożona w kontekście serwletu ROOT lub w innym kontekście? – Chaquotay

+0

Witam, z ogólnego statycznego pliku HTML w kontekście serwletu ROOT działa ze ścieżką względną. –

Odpowiedz

7

Znalazłem dwa rozwiązania. Jedna z makrami sprężystymi i jedna bez w moim pliku FreeMarker.

Najprostszym sposobem jest użycie go bez makr:

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

W tym rozwiązaniu muszę określić pełną ścieżkę.

Używając makr sprężyn, musisz umieścić plik spring.ftl w swoim katalogu szablonów i dołączyć go do każdego szablonu FreeMarker, w którym chcesz go użyć.

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

Makra sprężynowe mogą być również wykorzystywane do innych rzeczy this blog daje dobry przegląd.

+2

To jest to, co podejrzewałem. IMHO przy użyciu makro spring.url jest lepszym rozwiązaniem, ponieważ jest bardziej elastyczny. – Chaquotay

1

Można spróbować,

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

W czasie wykonywania tego kodu powróci dokładną ścieżkę.

+0

To działałoby w JSP z jstl, a nie w FTL. – ScottM