我是struts2的新手,我在迭代List中遇到问题。我无法使用struts 2迭代器标记迭代以下代码并显示在表中。
List<QueryResult> queryResults = queriesresult.getQueryResult();
for (QueryResult q_list : queryResults) {
List<LinkedHashMap> list_Cols = q_list.getRows();
for (LinkedHashMap<Object, Object> map : list_Cols) {
for (Map.Entry<Object, Object> entry : map.entrySet()) {
Object key = entry.getKey();
Object value = entry.getValue();
System.out.println("Hello Col:" + key);
System.out.println("Hello Rows:" + value);
}
}
}
我暴露了queryResults,在JSP中我试过:
<s:iterator value="queryResults" id="qr">
<s:iterator value="qr.rows" id="keyrow">
<s:iterator value="keyrow"> <table><tr><td>
<s:property value="key" />
<s:property value="value" /> </table></tr></td>
</s:iterator>
</s:iterator>
</s:iterator>
这是我试图在struts中迭代但不是迭代的。
答案 0 :(得分:0)
试试这个。
<s:iterator value="queryResults" id="qr"> <s:iterator value="qr.rows" id="keyrow">
Value : <s:property value="keyrow['<<key>>']"/>
</s:iterator>
</s:iterator>
可以使用格式mapName ['key']访问地图值。
答案 1 :(得分:0)
对于Struts 2.1+,您应该使用var
来定义每个迭代对象的名称,而不是id
。
最里面的<s:iterator>
代码应该遍历keyrow
,而不是 keyrow.entrySet
。
除了它是冗余的(地图迭代器已遍历地图的入口集),在OGNL中它将查找名为entrySet
的属性 - 但这不是属性的map,它是方法:keyrow.entrySet()
。但无论如何它都是不必要的。