Skip to content

03.04.01.Freemarker固有仕様

stormcat24 edited this page Aug 12, 2014 · 1 revision

template.yaml

Freemarkerの場合、プロジェクトルートに以下のtemplate.yamlファイルを配置する必要があります。

freemarker:
  # aeromock original setting
  extension: .ftl
  autoEscape: false

  # freemarker settings
  autoFlush: false
  objectWrapper: BEANS_WRAPPER
  autoIncludes: []
  booleanFormat: "true,false"
  classicCompatible: false
  #dateFormat:
  dateTimeFormat: "yyyy-MM-dd HH:mm:ss"
  defaultEncoding: "UTF-8"
  localizedLookup: true
  numberFormat: "###"
  outputEncoding: "UTF-8"
  strictBeanModels: false
  strictSyntaxMode: true
  tagSyntax: 0
  # AUTO_DETECT_TAG_SYNTAX = 0
  # ANGLE_BRACKET_TAG_SYNTAX = 1
  # SQUARE_BRACKET_TAG_SYNTAX = 2
  #templateUpdateDelay: 5000
  # timeFormat: "HH:mm:ss"
  urlEscapingCharset: "UTF-8"
  whitespaceStripping: true
  # BIGDECIMAL_ENGINE(default)|CONSERVATIVE_ENGINE
  arithmeticEngine:
  autoImports: []
項目名 内容 デフォルト
extension テンプレートの拡張子 .ftl
autoEscape エスケープタグを自動挿入するかどうか false
objectWrapper ObjectWrapperの実装。(BEANS_WRAPPER, STRUTS2_BEANS_WRAPPER, SIMPLE_WRAPPER, DEFAULT_WRAPPER) DEFAULT_WRAPPER
autoIncludes TODO TODO
booleanFormat TODO TODO
classicCompatible TODO TODO
dateTimeFormat TODO TODO
defaultEncoding TODO TODO
localizedLookup TODO TODO
numberFormat TODO TODO
outputEncoding TODO TODO
strictBeanModels TODO TODO
strictSyntaxMode TODO TODO
tagSyntax TODO TODO
templateUpdateDelay TODO TODO
timeFormat TODO TODO
urlEscapingCharset TODO TODO
whitespaceStripping TODO TODO
arithmeticEngine TODO BIGDECIMAL_ENGINE
autoImports マクロ定義のMap Empty list

Aeromock拡張機能

ビルトイン変数.now

Freemarkerのビルトイン変数として、.nowという現在時刻を取得するビルトイン変数があります。Aeromockでは.nowが返す現在時刻をデータファイルで定義することができます。データファイルのトップレベルに、__nowというプロパティを定義 します。

prop1: propValue
__now: 2014-06-01T00:00:00+09:00

様々な利用例

マクロのインポート

template.yamlのautoImportsに利用したいマクロを定義することが出来ます。

例として、Spring macroであれば、spring.ftlを任意の場所に配置します。template_root/common/spring.ftlのように配置すれば、以下のようになります。

autoImports:
  spring: common/spring.ftl

このマクロは、springという名前で定義したので、以下のように参照できます。

<ul>
	<li>@spring.message = <@spring.message "site.title" /></li>
	<li>@spring.message = <@spring.url "/aaa" /></li>
</ul>

マクロの中では、springMacroRequestContextを定義しているため、データファイルにこのオブジェクトを作る必要があります。 

springMacroRequestContext:
  __methods:
    - name: getMessage
      value: hogehoge
    - name: getContextUrl
      value: http://${HOST}/aaa
Clone this wiki locally