Velocity と同じテンプレートエンジンフレームワーク。 簡単に触ってみました。
FreeMarker-2.3.8 で動作検証。
public static void main(String[] args) {
Map<String, String> rootMap = new HashMap<String, String>();
rootMap.put("message", "Hello World! >>>");
StringWriter writer = new StringWriter();
Writer out = new BufferedWriter(writer);
Configuration cfg = new Configuration();
try {
Template t = cfg.getTemplate("template.ftl", Locale.US, "UTF-8");
t.process(rootMap, out);
} catch (TemplateException e) {
throw new RuntimeException(e);
} catch (IOException e) {
throw new RuntimeException(e);
} finally {
try {
if(out != null) {
out.close();
}
} catch(IOException ex) {
// ignore
}
}
System.out.println(writer.toString());
}
テンプレートファイルを実行ディレクトリ直下に template.ftl と template_ja_JP.ftl を置きます。
Head first FreeMarker
${message}
初めての FreeMarker
${message}
実行します。
Head first FreeMarker Hello World! >>>
Configuration#getTemplate に Locale.JAPAN を渡すと
初めての FreeMarker Hello World! >>>
国際化対応が楽にできました(^^
サニタイジングをしたい場合は
初めての FreeMarker
${message?html}
とすると、
初めての FreeMarker Hello World! >>>
めでたくサニタイジングできました。
ひとつひとつ面倒だなって場合は http://freemarker.sourceforge.net/docs/ref_directive_escape.html に書いてあるように
<#escape x as x?html>
${message}
</#escape>
と囲ってあげればいいようです。 Velocity はそんなに触ったことがないのですが、 テンプレートエンジンは FreeMarker でやっていこうかなと思いました。