2010-06-15 13 views
5

Ho un oggetto HashMap che sto ottenendo su una pagina JSP.Iterazione su hashmap in JSP nell'applicazione struts

HashMap<Integer,Gift_product> gift_hm = new HashMap<Integer,Gift_product>(); 
gift_hm.put(17,new Gift_product("doll",67)); 

Ora ho bisogno di iterare questo e visualizzare il contenuto su JSP. La classe Gift_product contiene due campi: name e price.

uscita JSP dovrebbe essere

serial no.   product name  price 
17     Doll   67 

Come posso raggiungerlo?

+0

Divertente ..., non mi aggiungo la parte generici nella fonte (ho appena riformattato nel codice) ma la cronologia delle revisioni sembra essere in disaccordo in questo? – rsp

+0

@rsp: a volte i generici vengono interpretati come tag html e tagliati fuori dall'output formattato. La formattazione corretta del post come codice quindi li fa apparire. Usa "Visualizza sorgente" sulla revisione per verificarlo. –

risposta

10

Controllare il puntone <logic:iterate> tag. Quando l'iterazione di un HashMap, ogni voce è un java.util.Map.Entry, per ottenere la chiave (in questo esempio il numero di serie) e valore (l'oggetto Gift_product) utilizzare le proprietà key e value simili:

Prima impostare la HashSet come un attributo nella tua classe di azione ad es request.setAttribute("gift_hm", gift_hm); e poi nel 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> 
+0

si ottiene direttamente seriale no che è nella parte chiave, nome prodotto che è in value.getProdutname() e prezzo value.getPrice() ... non proprio sicuro .. – Pedantic

+0

L'ho rivisto per stampare la chiave HashMap (mapEntry.getKey) come numero di serie e estrai l'oggetto Gift_product da mapEntry.getValue() – krock

0
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> 
3

Questo funziona per 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>