私は口ひげの初心者で、この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>
タグが空になります、なぜですか?ありがとう。
わかりません口ひげしかし、私が見たコードのいくつかのサンプルに基づいて、JavaコードでentrySet
変数を定義する必要があると思いますこのような
Set<Map.Entry<String,Object>> entrySet = mapA.entrySet();
mustacheコードでmapA
の代わりに使用します
{{#entrySet}}
<li>{{key}}</li>
<li>{{value}}</li>
{{/entrySet}}
上記の@Diciのように、entrySet
を使用できます。工場で特別なオプションを使用する必要はなく、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