使用struts2标记进行迭代时出现问题

时间:2011-11-16 08:34:08

标签: java struts2

我是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中迭代但不是迭代的。

2 个答案:

答案 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()。但无论如何它都是不必要的。