2011-08-04 21 views
6

Actualmente estoy tratando de incluir un archivo css en mi FreeMarker * .ftl. También configuré una carpeta de recursos en mi archivo servlet config xml.Enlace/incluir css en FreeMarker usando Spring 3 MVC

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

¿Pero cómo puedo acceder a mi archivo css desde mi plantilla de FreeMarker?

Simplemente intenté lo siguiente, pero sin éxito.

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

La carpeta de recursos se encuentra en la raíz de mi aplicación spring MVC 3.0.

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

Mi raíz servlet se define como:

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

Mis archivos FreeMarker están mintiendo en la carpeta de plantillas.

+0

¿Funciona el enlace al archivo CSS en el sitio web generado? ¿Su sitio web está implementado en el contexto del servlet ROOT o en un contexto diferente? – Chaquotay

+0

Hola, desde un archivo HTML estático general en mi contexto de servlet ROOT, funciona con una ruta relativa. –

Respuesta

7

He encontrado dos soluciones. Uno con macros de primavera y otro sin mi archivo FreeMarker.

La forma más sencilla es utilizar sin macros:

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

En esta solución, tengo que definir la ruta completa.

Al usar macros de primavera, debe colocar su spring.ftl en su directorio de plantillas e incluirlo en cada plantilla de FreeMarker donde desee utilizarlo.

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

Las macros de primavera también se pueden utilizar para otras cosas this blog da una buena visión general.

+2

Eso es lo que sospechaba. En mi humilde opinión, el uso de la macro spring.url es la mejor solución porque es más flexible. – Chaquotay

1

Puede probar esto,

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

En tiempo de ejecución de este código volverá ruta exacta.

+0

Esto funcionaría en un JSP con jstl, no en un FTL. – ScottM

Cuestiones relacionadas