2011-08-04 10 views
6

現在、私のFreeMarker * .ftlにCSSファイルを含めることを試みています。私はまた、私のサーブレット設定XMLファイルにリソースフォルダを設定しました。Spring3を使用してFreeMarkerにcssをリンクする/ MVC

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

FreeMarkerテンプレートから自分のCSSファイルにアクセスするにはどうすればよいですか?

私は単純に次のことを試みましたが、成功しませんでした。

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

リソースフォルダは、春のMVC 3.0アプリケーションのルートにあります。

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

私のサーブレットのルートは次のように定義されています

<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のファイルは、テンプレートフォルダに横たわっています。

+0

生成されたWebサイトのCSSファイルへのリンクは機能しますか?あなたのウェブサイトは、ROOTサーブレットのコンテキストに展開されていますか、別のコンテキストで展開されていますか? – Chaquotay

+0

こんにちは、私のROOTサーブレットコンテキスト内の一般的な静的HTMLファイルから、それは相対パスで動作します。 –

答えて

7

私は2つの解決策を見つけました。 FreeMarkerファイルには春のマクロと1つありません。

最も簡単な方法は、マクロなしでそれを使用することです:私は完全なパスを定義する必要があり、このソリューションでは

<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

それは私が疑ったものです。 IMHOはspring.urlマクロを使用する方がより柔軟ですので、より良い解決策です。 – Chaquotay

1

あなたは、このコードは正確なパスを返します実行時に

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

、これを試すことができます。

+0

これはJSPでjstlで動作し、FTLでは動作しません。 – ScottM

関連する問題