4.2.5.1.6. テンプレート¶
処理種別(タイプ)テンプレートは、ユーザ定義タスクとして文字列テンプレートの置換を行うタスクを定義します。
このタスクでは、 入力データをもとに設定された文字列テンプレートを置換して生成した文字列を返却します。
メール本文の生成や、HTMLの生成を行いたい場合などに、このユーザ定義タスクを利用することができます。
4.2.5.1.6.1. 入力値/返却値¶
処理種別(タイプ)テンプレートでは、入力値/返却値をそれぞれ以下のように定義します。
4.2.5.1.6.1.1. 入力値¶
テンプレートのロケールと、テンプレートを置換する際に利用する各変数を定義します。
- locale
- テンプレートのロケール(指定されていない場合は、標準のテンプレートが利用されます。)
- data
- テンプレートを置換する際に利用する変数
4.2.5.1.6.2. テンプレート定義¶
各ロケール毎の文字列テンプレートを設定します。
入力値に設定されていないロケールが指定されている場合は、標準のテンプレートが使用されます。
4.2.5.1.6.3. テンプレートの記法¶
テンプレートは FreeMarker Template Language(FTL)で記述することが可能です。
FTLの記法について詳しくは「Template Language Reference」を参照してください。
式
テンプレートではさまざまな式を扱うことができます。例えば、変数の値を代入したい場合は以下のようにテンプレートを定義します。Hello, ${userName}.
変数 userName が「ueda tatsuo」の場合、Hello, ueda tatsuo.と変換された文字列が得られます。built-in
FTL では型ごとに、さまざまな組み込みの手続き(ビルトイン)が用意されています。ビルトインは「?」に続けて指定します。例えば、URLをエンコードして出力したい場合は以下のようにテンプレートを定義します。${urlString?url}.
変数 urlString の値をURLエンコーディングされた文字列が得られます。list(繰り返し)
変数(配列)による繰り返しを記述する場合には、<#list>ディレクティブを使用します。例えば、以下のようにテンプレートを定義します。<#list goodsList as goods> * ${goods.name} x ${goods.count} = ${goods.price}- </#list>
変数 goodsList の要素を goods として扱いながら、繰り返し処理が行われます。変数 goodsList の内容が以下の場合には、"goodsList" : [ { "name" : "pen", "count" : 10, "price" : 1000 }, { "name" : "book", "count" : 5, "price" : 6000 }, ]
以下のように変換された文字列が得られます。* pen x 10 = 1000- * book x 5 = 6000-
if(条件式)
変数による条件式を記述する場合には、 <#if>ディレクティブを使用します。例えば、以下のようにテンプレートを定義します。<#if totalPrice gte 100> Because the total amount is $100 or more, shipping is free. </#if>
変数 totalPrice の値が 100 以上の場合、Because the total amount is $100 or more, shipping is free.と変換された文字列が得られます。<#if>ディレクティブのタグ内では 不等号( <> )は使うことはできません。代わりに相当する言葉で演算子が用意されています。記号 意味 タグ内で使う演算子 < 未満 lt <= 以下 lte > より大きい gt >= 以上 gte