1.全体構造

FreeMarkerはFTL(FreeMarker Template Language)という言語で記載する。

といっても、シンプルなのでそこまで覚えることはない。

FTLは以下の4つの構文で構成される。

  • テキスト
    • 静的なコンテンツ。プレーンテキストでもHTMLでもXMLでも何でもいい。
  • 埋め込み変数
    • Javaオブジェクトの変数を埋め込む箇所。 ${ と } で囲った部分が出力時にオブジェクトの内容で置換される。
  • FTLタグ
    • 制御構造やマクロ構文を埋め込む箇所。
    • 通常はタグ形式で記載する。
    • FTLタグのネストはできない(NG: <#if <#include 'foo'>='bar'>...</#if>)
    • FTLの先頭に[#FTL]と記載することで、山かっこ(<>)の代わりに角かっこ([])を使用することもできる。
  • コメント
    • FTL内でコメントしたい場合は<#-- と --> で囲う。
    • コメント内容は出力時には表示されない。
    • コメントは埋め込み変数・FTLタグの中に含めることもできる。

以下にサンプルコードを表示する(本家からのコピペ)

テキスト、埋め込み変数、FTLタグ、コメントで色づけしている。

<html>[BR]
<head>[BR]
  <title>Welcome!</title>[BR]
</head>[BR]
<body>[BR]
  <#-- Greet the user with his/her name -->[BR]
  <h1>Welcome ${user}!</h1>[BR]
  <p>We have these animals:[BR]
  <ul>[BR]
  <#list animals as being>[BR]
    <li>${being.name} for ${being.price} Euros[BR]
  </#list>[BR]
  </ul>[BR]
</body>[BR]
</html>

変数名・タグ名は大文字・小文字を区別するので注意。

2.構文