我有在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......
谢谢........
答案 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 Plugin 的dataSource
。
答案 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迭代映射,然后使用另一个迭代器和迭代器状态迭代值列表以添加“,”,除非它是最后一个条目。