以下のようにできます。まぁ本家のマニュアルにも記載してありましたが,,
まずは、元になるテンプレートを用意します。
import したいテンプレートの部分は {{ > 対象となるテンプレートのパス }} のように設定します。
{{> common/common_header }}
{{!This is comment of Mustache!!}}
<h1>pojo.str</h1>
<h2>{{str}}</h2>
<h1>pojo.num</h1>
<h2>{{num}}</h2>
<h1>pojo.flag</h1>
{{#flag}}flag = true {{/flag}}
{{^flag}}flag = false {{/flag}}
<h1>pojo.array</h1>
{{#array}}
{{.}}</br>
{{/array}}
<h1>pojo.data</h1>
{{#data}}
<p>upper: {{a}} , {{b}}</p></br>
{{/data}}
<h1>Escaped Characters</h1>
{{escape}}
{{> common/common_footer }}
で import されるテンプレートは以下のように定義
<!DOCTYPE html>
<html>
<head>
<title>{{title}}</title>
<meta charset="UTF-8">
</head><body>
<p>This is footer</p> </body> </html>
プログラム側は、以下のように ※前回のとほぼ変わりません。テンプレートに渡すオブジェクトを2つ渡しているだけです
package com.blogspot.agiroh.netty.template.html;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.UUID;
import com.github.mustachejava.DefaultMustacheFactory;
import com.github.mustachejava.Mustache;
import com.github.mustachejava.MustacheFactory;
public class ExampleMustache {
final static String template_path = "template/mustache/example.mustache";
public static class ExamplePojo {
String str;
long num;
boolean flag;
Map<String, Object> data;
List<String> array;
String escape;
}
static Map<String, Mustache> templates = new HashMap<>();
public void run() throws Exception {
// default is classpath.
MustacheFactory factory = new DefaultMustacheFactory();
Mustache mustache = null;
if (!templates.containsKey(template_path)) {
mustache = factory.compile(template_path);
templates.put(template_path, mustache);
} else {
System.out.println("templates from cache");
mustache = templates.get(template_path);
}
ExamplePojo pojo = new ExamplePojo();
pojo.str = UUID.randomUUID().toString();
pojo.num = new Date().getTime() / 1000;
pojo.flag = true;
pojo.data = new HashMap<String, Object>();
pojo.data.put("a", "A");
pojo.data.put("b", "B");
pojo.array = new ArrayList<>();
pojo.array.add("hoge");
pojo.array.add("fuga");
pojo.escape = "<p>\"te&st\"</p>";
Map<String, String> headerPojo = new HashMap<>();
headerPojo.put("title", "Import another templtes");
mustache.execute(new PrintWriter(System.out), new Object[] { pojo, headerPojo }).flush();
}
public static void main(String[] args) {
try {
new ExampleMustache().run();
} catch (Exception e) {
e.printStackTrace();
}
}
}
これで思ったとおり動作できました。
0 件のコメント:
コメントを投稿