Map 使用s:iterator在映射列表上迭代

Map 使用s:iterator在映射列表上迭代,map,struts2,iterator,Map,Struts2,Iterator,我试图使用s:iterator遍历一个映射列表。我可以毫无问题地遍历列表,但我无法让它遍历映射的条目。到目前为止,我得到了这个: [..] <s:iterator value="records" status="recordsStatus" var="record"> <s:if test="#recordsStatus.index ==0"> <tr> <td colspan="*

我试图使用s:iterator遍历一个映射列表。我可以毫无问题地遍历列表,但我无法让它遍历映射的条目。到目前为止,我得到了这个:

[..]
<s:iterator value="records" status="recordsStatus" var="record">
        <s:if test="#recordsStatus.index ==0">
            <tr>
                <td colspan="*"></td>
            </tr>
        </s:if>
        <tr>
            <s:iterator value="record.entrySet()" status="fieldStatus">
            <td>
                <s:property value="key"/>/<s:property value="value"/>
            </td>
            </s:iterator>
        </tr>
    </s:iterator>
[..]
[…]
/
[..]
标记生成

<tr></tr>

对于每个条目,但它不会经过第二个迭代器,所以我想我对value属性做了一些错误的处理。你能帮我吗

谢谢


Jose

下面是一个演示,它循环浏览地图列表:

import com.opensymphony.xwork2.ActionSupport;
导入java.util.ArrayList;
导入java.util.HashMap;
导入java.util.List;
导入java.util.Map;
公共类mapTest扩展了ActionSupport{
公共列表列表图;
公共字符串execute(){
listmap=newarraylist();
Map Map=newhashmap();
地图放置(“a”、“alpha”);
地图放置(“b”,“b”,“b”);
地图放置(“c”、“查理”);
添加(map);
Map map2=新的HashMap();
map2.put(“d”、“delta”);
map2.put(“e”、“echo”);
地图2.put(“f”,“狐步”);
添加(map2);
回归成功;
}
}
下面是呈现它的JSP:


地图测试
名单#
钥匙
价值
注意,内部迭代器是上下文敏感的,它将使用推送到堆栈上的最后一个值。status属性在每次迭代中为我们提供一个IteratorStatus对象,如果我们想知道当前迭代,这很有用。

请看一下: