Как перебирать карту с помощью усов в java
Я новичок в усах и задавался вопросом, как перебирать HashMap
с помощью усов с учетом этого Map
Map mapA = new HashMap();
mapA.put("key1", "element 1");
mapA.put("key2", "element 2");
mapA.put("key3", "element 3");
Имена ключей карты различаются. В идеале я хочу, чтобы усы перебирали как свой ключ, так и ценности. Поэтому в java это будет выглядеть так:
for (Map.Entry<String, Object> entry : mapA.entrySet()) {
String key = entry.getKey();
String value = entry.getValue();
// ...
}
Так может кто-то сказать мне, как достичь выше в усах. Я имею в виду, как будет выглядеть шаблон? Я пробовал этот шаблон, но пока не повезло: (
{{#mapA}}
<li>{{key}}</li>
<li>{{value}}</li>
{{/mapA>
Итак, когда я запускаю этот шаблон, выходные теги <li>
выводятся пустым, почему?
Благодарю.
Ответы
Ответ 1
Я не знаю усов, но, основываясь на некоторых образцах кода, которые я видел, я думаю, что вы должны определить переменную entrySet
в вашем Java-коде, например,
Set<Map.Entry<String,Object>> entrySet = mapA.entrySet();
и использовать его вместо mapA
в коде уса.
{{#entrySet}}
<li>{{key}}</li>
<li>{{value}}</li>
{{/entrySet}}
Ответ 2
Как упоминалось выше @Dici, вы можете использовать entrySet
. Вам не нужно использовать какие-либо специальные опции в factory и передать его непосредственно на execute
. В шаблоне вы можете использовать карту верхнего уровня, если ваш шаблон очень прост.
Java
Map<String, String> map = new HashMap<>();
map.put("key1", "value1");
map.put("key2", "value2");
Writer writer = new OutputStreamWriter(System.out);
MustacheFactory mustacheFactory = new DefaultMustacheFactory();
Mustache template = mustacheFactory.compile("map.template");
template.execute(writer, map.entrySet()).close();
Шаблон усов (map.template
)
{{#.}}
keylabel:{{key}} : valuelabel:{{value}}
{{/.}}
Результат
keylabel:key1 : valuelabel:value1
keylabel:key2 : valuelabel:value2
Ответ 3
Я видел это в одной библиотеке:
public Map<String, Object> allowableValues;
А потом:
{{#allowableValues}}
{{#enumVars}}const {{{name}}} = {{{value}}};
{{/enumVars}}{{/allowableValues}}