FreeMarkerの記載方法

テンプレートエンジンであるFreeMarkerについて

日本語の説明ページがほとんど存在しないので備忘録として残しておく

そもそもFreeMarkerとは?

上記に書いた通り、FreeMarkerはJava用のテンプレートエンジンであり、Velocityなどと同じように、静的なテンプレートに埋め込まれた変数にアプリケーション側で値を代入することで、動的に出力ファイルを生成できる。

また、テンプレートには条件式や繰り返しなど制御構造を埋め込むこともできる。

日本ではVelocityのほうが有名で解説サイトも多いが、海外ではわりと多く使われている。

Velocityに比べて制御文がタグ表記だったり、変数を中かっこでくくったりと、よりテンプレート部分と変数の埋め込み部分の分離がはっきりしている。

<#if isHoge>
  <#list  someList as some>
    <#if some.message??>
      ${some.message}
    <#else>
      デフォルトメッセージ
    </#if>
  </#list>
</#if>

FreeMarkerの表示サンプル

以下、本家サイトより機能の紹介

  • 複数の書式(HTML, XML, RTF, Javaソースコードなど)で出力ファイルを自動生成することができる
  • 簡単にプロジェクトに適用可能(テンプレート埋め込みにサーブレット環境を必要としない)
  • テンプレートの保存方法に依存しない(テキストファイルで用意してもいいし、DBから呼び出してもいい)
  • 出力方法もいろいろ選択できる(ローカルファイル、メール送信、WebアプリケーションのViewとしてなど)
  • if/elseif/elseやループ構造を埋め込める
  • テンプレート内で変数を作成したり変更したりできる
  • 変数に対していろいろ加工できる(文字列変換や数値計算やフォーマット変換など)
  • マクロ処理をタグとして作成可能(例:<@myMacro color="red" width=2>...</@myMacro>)
  • 名前空間を付けることができる
  • ブロック単位で出力ファイルを加工できる(HTMLのエスケープや単語のハイライトなど)
  • 引数であるJavaオブジェクトをラッピングして、統一されたモデルとして提供する
  • テンプレート内では内部オブジェクトの詳細を気にすることなく使うことができる
  • HTMLエスケープのようなWeb関連の一般的な処理機能を内蔵している
  • JSP2.1までのタグライブラリをサポート(一部例外を除く)
  • 多言語・多地域対応