3
我有一个像下面迭代通过的HashMap中的freemarker
HashMap<String, String> testStatus = new HashMap<String, String>();
Map root = new HashMap();
public void fmTest() {
testStatus.put("one","1");
testStatus.put("two","2");
testStatus.put("three","3");
root.put("status", testStatus);
testStatus.clear();
}
我FTL一个HashMap:
<#list status?keys as key>
${key} = ${status[key]}
</#list>
上面的代码只是一个例子。我的问题是,如果我循环testStatus hashmap在每个循环中具有不同的值,并在循环结束时清除...我如何让freemarker显示来自每个循环的testStatus hashmap的键值对。
如果我不清除testStatus hashmap,我会得到累计结果。但是,如果我清除testStatus HashMap中的freemarker无显示..
当您执行'root.put(“status”,“testStatus”)'它正在维护对同一'HashMap'的引用。它不会创建'testStatus' HashMap的副本。因此,当你清除()时,它的所有内容都被清除了。我认为要实现你想做的事情,在开始时在你的循环内创建并分配一个'new testStatus HashMap'。 – 2013-02-12 16:09:45
我试过了。它没有工作。自由标记仍然显示最后一个循环的散列图结果。 – 2013-02-12 16:22:58
我认为你的问题不是freemarker,很明显,清除testStatus会导致freemarker显示没有什么,但有趣的是,如果你不testStatus显示累计结果,我认为你的例子是不够的,我会问你向我们展示整个方法,循环等...来检测问题 – 2013-03-11 18:37:40