テンプレート処理
HTMLなどでヘッダー部分やフッター部分など
ある程度共通の部分は別ファイルで管理して読み込みたいことがありますのでテンプレートとして使用します。
設定
pom.xml
<dependencies> <!-- https://mvnrepository.com/artifact/org.freemarker/freemarker --> <dependency> <groupId>org.freemarker</groupId> <artifactId>freemarker</artifactId> <version>2.3.23</version> </dependency> </dependencies>
テンプレートファイル
sampl1.ftl
<#-- name --> name: ${name} <#-- age --> age: ${age} <#-- biko --> <#if biko?has_content> biko: ${biko} </#if>
うん、まあ意味は分かる。変数を割り当てるような感じ
実装
Sample01.java
package com.example; import java.io.File; import java.io.IOException; import java.io.StringWriter; import java.io.Writer; import java.util.HashMap; import java.util.Map; import freemarker.template.Configuration; import freemarker.template.Template; import freemarker.template.TemplateException; public class Sample01 { public static void main(String[] args) throws IOException, TemplateException { // 初期化 Configuration cfg = new Configuration(Configuration.VERSION_2_3_23); // ディレクトリを指定 cfg.setDirectoryForTemplateLoading(new File("src/main/resources/template")); // テンプレートファイルを指定 Template temp = cfg.getTemplate("sample1.ftl"); // データモデル Map<String, String> root = new HashMap<String, String>(); root.put("name", "hoge"); root.put("age", "100"); root.put("vvvv", "ddddd"); // 未定義のものは設定してもエラーにならない // テンプレート処理 Writer out = new StringWriter(); temp.process(root, out); out.flush(); // 結果出力 String displayStr = out.toString(); System.out.print(displayStr); } }
※標準出力に返すサンプルが多かったけどあんまり好きじゃないので文字列に設定してみました。
↓
name: hoge age: 100
できました(^^)
所感
とりあえず、こんな感じ
これだけじゃああまり有用ではないので他のファイルを読み込めることを調べてみる