Freemarker迭代地图列表中的hashmap

时间:2015-05-20 10:11:01

标签: java html freemarker

我已经看到了类似的问题,但仍然找不到很大的解决方案。

这个程序:

List<HashMap<String, String>> list = ArrayList<HashMap<String, String>>();
String abc = "a,b,c";

for(String x : abc.split(",")){
  // how to get this ?
  HashMap<String, String> map = new HashMap<String, String>();
  map.put("one", x);
  map.put("two", x);
  map.put("three",x);
  list.add(map);
}

HashMap<String, Object> root = new HashMap<String, Object>();
root.put("abc",list);
root.put("test", "value");

如果我想使用freemark程序从根图迭代地图,该怎么做?

1 个答案:

答案 0 :(得分:1)

如果您将代码放入方法

中的模型bean中
  public HashMap<String, Object> getRoot() {
    // ... your code
    return root;
  }

然后您可以访问abc键下的地图列表,如下所示:

[
<#list root['abc'] as map>
  {
  <#list map?keys as key>
    ${key}: ${map[key]}
  </#list>
  }
</#list>
]

而不是root['abc'],您也可以使用root.abc,但第一个版本强调abc是哈希映射键,而不是root的属性。

这是结果输出:

[
  {
    two: a
    one: a
    three: a
  }
  {
    two: b
    one: b
    three: b
  }
  {
    two: c
    one: c
    three: c
  }
]