Java文件
for(..){
java.util.List opslist = new ArrayList();
opr.setOperationName(operation.getName()); //gets operation name (iterate and get n no of names) sets it to opr
System.out.println(opr.getOperationName());//gets all the set values n prints it(jus to chack that all values r getting set)
opslist.add(opr.getOperationName());//putting those valies into a list
datamodel.put("opslist", opslist.toArray(new String[]{}));//putting it into a hash map with key as opslist and value as opslist object
}
自由标记模板
<#list opslist as x> //read the values from the key "opslist" (gets only one value)
${x} //print values one by one(it prints only one value) </#list>
java文件的输出是
get
set
value
usage
Freemarket模板的输出
usage
为什么只打印最后一个值?
有人能告诉我在freemarker模板中做正确的方法吗?
答案 0 :(得分:1)
看起来您正在为列表中的每个元素创建一个新的操作列表。以这种方式,只有最后一个元素被传递给freemarker。 只需把List opslist = new ArrayList();在for循环前面
答案 1 :(得分:1)
那是因为你在for循环的每次迭代中都创建了一个新列表。此外,您在datamodel映射中为同一个键添加了4个列表。它应该纠正如下:
java.util.List opslist = new ArrayList();
for(..){
opr.setOperationName(operation.getName()); //gets operation name (iterate and get n no of names) sets it to opr
System.out.println(opr.getOperationName());//gets all the set values n prints it(jus to chack that all values r getting set)
opslist.add(opr.getOperationName());//putting those valies into a list
}
datamodel.put("opslist", opslist.toArray(new String[]{}));//putting it into a hash map with key as opslist and value as opslist object