I have a HashMap
object that I am getting on a JSP page.
HashMap<Integer,Gift_product> gift_hm = new HashMap<Integer,Gift_product>();
gift_hm.put(17,new Gift_product("doll",67));
Now I need to iterate this and display content on JSP.
The Gift_product
class con开发者_如何学运维tains two fields: name
and price
.
JSP output should be
serial no. product name price
17 Doll 67
How can I achieve it?
Check out the struts <logic:iterate>
tag. When iterating over a HashMap, each entry is a java.util.Map.Entry
, to get the key (in this example the serial number) and value (the Gift_product object) out use the key
and value
properties like this:
First set the HashSet as an attribute in your action class e.g. request.setAttribute("gift_hm", gift_hm);
and then in the jsp:
<logic:iterate id="mapEntry" name="gift_hm">
<bean:define id="gift" name="mapEntry" property="value">
<tr>
<td><bean:write name="mapEntry" property="key"></td>
<td><bean:write name="gift" property="productName"></td>
<td><bean:write name="gift" property="price"></td>
</tr>
</logic:iterate>
This one works for me (struts2):
<s:iterator value="giftMap" var="giftMapElement">
<s:set var="giftKey" value="#giftMapElement.key"/>
<s:set var="giftValue" value="#giftMapElement.value"/>
<tr>
<td><s:property value="#giftKey"/></td>
<td><s:property value="#giftValue.productName"/></td>
<td><s:property value="#giftValue.price"/></td>
</tr>
</s:iterator>
Solution
-----------
<s:iterator value="map">
<h3><s:property value="key" /></h3>
<table>
<s:iterator value="value">
<tr><td><s:property /></td></tr>
</s:iterator>
</table>
</s:iterator>
<logic:iterate name="FormName" property="formProperty"
id="list" indexId="sno">
<tr>
<td><bean:write name="list" property="value.giftproductVariable" /></td>
<td><bean:write name="list" property="value.giftproductVariable" /></td>
</tr>
</logic:iterate>
精彩评论