0

我有在 Struts2 中返回 LinkedHashMap 的函数,我才知道我们不能在 struts2 中使用 for 循环,而是必须使用迭代器,并且是 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......

谢谢........

4

2 回答 2

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也可以用作dataSourceStruts2 JasperReports插件

于 2011-05-31T08:04:51.697 回答
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 迭代地图,然后使用另一个迭代器和迭代器状态迭代您的值列表以添加“,”,除非它是最后一个条目。

于 2011-07-11T19:30:05.873 回答