Цикл в шаблоне руля Java вместе с другими параметрами
Я хочу создать 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, поэтому я не могу (или предпочитаю не создавать) список объектов на самом деле.
1 ответ
Решение
Могли бы сделать это с базовыми усами. Работает как положено. Ниже приведен пример:
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();
}