以下のようにできます。まぁ本家のマニュアルにも記載してありましたが,,
まずは、元になるテンプレートを用意します。
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 件のコメント:
コメントを投稿