如何使用Struts2中的迭代器从linkedhashmap中检索值......?

时间:2011-05-31 07:21:44

标签: struts2 iterator linkedhashmap

我有在Struts2中返回LinkedHashMap的函数,我刚才知道我们不能在struts2中使用for循环而不是使用Iterators,而且是struts的新手

可以帮助我使用迭代器从linkedhashmap中检索值,下面是如何在hashmap中排列值:

 LinkedHashMap<String, ArrayList<String>> topSuppliers = new LinkedHashMap<String, ArrayList<String>>();

    while(resultset.next()){

    ArrayList<String> innerList = new ArrayList<String>();

    String manufId = resultset.getString("manufacturer_id");
    String manufLogo = resultset.getString("SUPPLIER_LOGO_IMAGE");
    String manufName = resultset.getString("MANUFACTURER_NAME");
    String manufURL = resultset.getString("MANUFACTURER_URL");

     innerList.add(manufId);
     innerList.add(manufLogo);
     innerList.add(manufName);
     innerList.add(manufURL);

     topSuppliers.put(manufName,innerList);
    }
return topSuppliers;

我想在一组4家制造商中展示它们:

Set1:  1,2,3,4
Set2:  5,6,7,8
Set3:  9,10,11,12
etc......

谢谢........

2 个答案:

答案 0 :(得分:1)

您应该迭代List of Map而不是Map of List

<小时/> 示例

@Getter
private List<Map> listOfMap = Lists.newArrayList();

public String execute() {

    while (resultset.next()) {
        final Map<String, String> map = Maps.newHashMap();

        map.put("manufId", resultset.getString("manufacturer_id"));
        map.put("manufLogo", resultset.getString("SUPPLIER_LOGO_IMAGE"));
        map.put("manufName", resultset.getString("MANUFACTURER_NAME"));
        map.put("manufURL", resultset.getString("MANUFACTURER_URL"));

        listOfMap.add(map);
    }

    return SUCCESS;
}

<s:iterator value="listOfMap">
  ${manufId}
  ${manufLogo}
  ${manufName}
  ${manufURL}
</s:iterator>

listOfMap也可以用作{strong> Struts2 JasperReports PlugindataSource

答案 1 :(得分:1)

您可以在地图上使用s:iterator。

<s:iterator value="topSuppliers">
  <s:property value="key" />: <s:iterator value="value" status="status"><s:property /><s:if test="!#status.last">,</s:if></s:iterator>
</s:iterator>

使用Map.Entry迭代映射,然后使用另一个迭代器和迭代器状态迭代值列表以添加“,”,除非它是最后一个条目。