freemarkerの設定

設定は3つのレイヤで可能

上位からEnvironment,Template,Configurationです。それぞれ、Configurableクラスを継承しています。
http://freemarker.sourceforge.net/docs/pgui_config_settings.html
より上位のレイヤの設定内容が有効となります。例えばEnvironmentとConfigurationで同じパラメータに対し異なる値が設定されていてもEnvironmentの設定が有効となります。

  • Configurationは主に設定ファイルによって値がセットされます。もちろん直接設定してもOKです。
  • Templateに設定をすることは基本的にやらない
  • Environmentにおける設定はテンプレートファイル内において下記のように行う。
<#setting locale="it_IT">
<#setting number_format="0.####"> 

設定項目

3つのレイヤに共通の設定とConfigurationだけの設定があります。
http://freemarker.org/docs/api/constant-values.html
freemarker.core.Configurableが共通、freemarker.template.Configurationが専用。

いかにいくつか例を挙げます

date_format

日付のフォーマットを指定。
例えば

date_format = YYYY/MM/dd

datetime_formatも同様

number_format

数値を表示する際のデフォルトのフォーマットを決める。
例えば

number_format = #

としていると${123456.78}は「123457」と表示され

number_format=000,000,000.000

とすると「000,123,456.780」と表示され

number_format=,###.###

とすると「123,456.78」と表示される。

これらのdate_formatやnumber_formatはデフォルトの振る舞いであって、${dateValue?string("MM/dd")}や${numValue?string(",###")}みたいにすれば個別に指定可能です。

whitespace_stripping

trueに設定すると余分な空白を取り除いてくれます。
全ての空白というわけではないです。詳細未確認。

auto_include

それぞれのテンプレートファイルで宣言しなくても毎回includeしてくれます。

auto_include=/path/to/include.ftl, /path/to/include2.ftl

anto_importも同様です。

auto_import=/path/to/import.ftl as i, /path/to/import2.ftl as i2
default_encoding, output_encoding, url_escaping_charset

文字コードの設定です。
default_encodingはテンプレート読み込みの際に使用するエンコードを設定します。
url_escaping_charsetは画面にurlを${foo?url}のように埋め込む際にエスケープするエンコードを設定します。nullの場合はoutput_encodingが使用されます。