如何在java中使用mustache在地图上迭代

如何在java中使用mustache在地图上迭代,java,mustache,Java,Mustache,我是一个胡须新手,我想知道如何在HashMap上迭代使用胡须,因为Map Map mapA = new HashMap(); mapA.put("key1", "element 1"); mapA.put("key2", "element 2"); mapA.put("key3", "element 3"); 映射键名称各不相同。理想情况下,我希望Mustach在其键和值上都进行迭代。因此,在java中,它将如下所示: for (Map.Entry<String, Object>

我是一个胡须新手,我想知道如何在
HashMap
上迭代使用胡须,因为
Map

Map mapA = new HashMap();

mapA.put("key1", "element 1");
mapA.put("key2", "element 2");
mapA.put("key3", "element 3");
映射键名称各不相同。理想情况下,我希望Mustach在其键和值上都进行迭代。因此,在java中,它将如下所示:

for (Map.Entry<String, Object> entry : mapA.entrySet()) {
   String key = entry.getKey();
   String value = entry.getValue();
   // ...
} 
for(Map.Entry:mapA.entrySet()){
String key=entry.getKey();
字符串值=entry.getValue();
// ...
} 
所以,有人能告诉我如何实现以上的胡子。我的意思是模板会是什么样子?我尝试了此模板,但到目前为止运气不佳:(

{{#mapA}
  • {{key}}
  • {{value}}
  • {{/mapA>
    因此,当我运行此模板时,输出的
  • 标记将显示为空,为什么? 谢谢。

    我不知道mustache,但根据我看到的一些代码示例,我认为您应该在Java代码中定义一个
    entrySet
    变量,如下所示

    Set<Map.Entry<String,Object>> entrySet = mapA.entrySet();
    

    正如上面提到的@Dici,您可以使用
    入口集
    。您不必在工厂中使用任何特殊选项,可以将其直接传递给
    执行
    。如果模板非常简单,您可以在模板中使用顶级映射

    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();
    
    结果

    keylabel:key1 : valuelabel:value1
    keylabel:key2 : valuelabel:value2
    

    这里的相关问题我认为最接近的方法是将条目集对象包装在
    列表中
    并检索模板中还有语法错误。最后一行应该是
    {{/mapA}
    ,而不是
    {{/mapA>
    这真的有效吗?我试过了,但在我根据代码样本和文档给出答案时,它不起作用。OP接受了答案,所以我认为它对他有效。它对我有效,但我必须配置MustacheFactory以允许对java.util.Map中的方法进行内省。我使用的是mustac的java版本这里的图书馆:我明白了,这是对答案的有益补充:)@Dhiraj你能分享一下你是怎么做到的吗?我不知道我怎么能在MustacheFactory上配置内省。
    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();
    
    {{#.}}
    keylabel:{{key}} : valuelabel:{{value}}
    {{/.}}
    
    keylabel:key1 : valuelabel:value1
    keylabel:key2 : valuelabel:value2