0

次のようなハンドルバーJavaテンプレートを作成したい:

"This is a sample template with {{parameter1}} {{#if object_list}} {{#each object_list}} {{object_list.somevar}} {{object_list.othervar}} {{/each}}{{/if}}"

object_list.something を実行する前に、単純なループを実行することさえできません。私は次のことを試しました:

Map<String, String> map = new HashMap<String, String>();
    map.put("people", "[ Yehuda Katz, Alan Johnson, Charles Jolley ]");
    map.put("k2", "v2");

        System.out.println("Map: "
            + handlebars.compileInline("{{#each people}} {{@index}}:{{this}}  \n {{/each}}")
            .apply(map));               
}

そしてそれは与えます:

Map:  :[B@6cd8737  
  :false  

これを達成する方法についての指針はありますか?注: これらのパラメーターは json ファイルで受信されるため、実際にオブジェクトのリストを作成することはできません (または作成したくない)。

私はフォローしています: https://github.com/jknack/handlebars.java

4

1 に答える 1

0

ベースの口ひげでそれを行うことができます。期待どおりに動作します。次に例を示します。

 private static void test2() throws IOException {
       HashMap<String, Object> scopes = new HashMap<String, Object>();
        scopes.put("name", "Mustache");

        List<String> features = new ArrayList<String>();
        features.add("f1");
        features.add("f2");

        scopes.put("features", features);

        List<Map<String, String>> discounts = new ArrayList<Map<String,String>>();
        Map<String, String> discount1 = new HashMap<String, String>();
        Map<String, String> discount2 = new HashMap<String, String>();
        discount1.put("type", "a");
        discount1.put("value", "15");

        discount2.put("type", "b");
        discount2.put("value", "215");

        discounts.add(discount1);
        discounts.add(discount2);

        scopes.put("discounts", discounts);

        Writer writer = new OutputStreamWriter(System.out);
        MustacheFactory mf = new DefaultMustacheFactory();
        Mustache mustache = mf.compile(new StringReader("{{name}},  {{#features}} Feature: {{.}}  {{/features}}! {{#discounts}} {{type}} {{value}}{{/discounts}}"), "example");
        mustache.execute(writer, scopes);
        writer.flush(); 
 }
于 2016-12-20T05:15:24.450 に答える