2010-06-15 8 views
5

Ich habe ein HashMap Objekt, das ich auf einer JSP-Seite bekomme.Iterieren über Hashmaps in JSP in Streben Anwendung

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

Jetzt muss ich dies iterieren und Inhalte auf JSP anzeigen. Die Klasse Gift_product enthält zwei Felder: name und price.

JSP Ausgabe sollte

serial no.   product name  price 
17     Doll   67 

Wie kann ich es erreichen?

+0

Lustig ..., ich habe nicht die Generika an der Quelle hinzufügen (I nur in Code umformatiert), aber die Revisionshistorie scheint darin nicht übereinzustimmen. – rsp

+0

@rsp: Generics werden manchmal als HTML-Tags interpretiert und aus der formatierten Ausgabe ausgeschnitten. Wenn Sie den Post korrekt als Code formatieren, werden sie angezeigt. Verwenden Sie "View source" in der Revision, um dies zu überprüfen. –

Antwort

10

Überprüfen Sie die Streben <logic:iterate> Tag. Wenn über einen HashMap iterieren, ist jeder Eintrag ein java.util.Map.Entry, den Schlüssel zu bekommen (in diesem Beispiel die Seriennummer) und Wert (die Gift_product Objekt) verwenden Sie die key und value Eigenschaften wie folgt aus:

zuerst die HashSet als ein Attribut in Ihrer Aktionsklasse z request.setAttribute("gift_hm", gift_hm); und dann in der 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

ist es direkt bekommen es Seriennummer, die im Schlüsselteil ist, Produktname, der in value.getProdutname() und Preis value.getPrice() ... nicht ganz sicher ist .. – Pedantic

+0

Ich überarbeitete es, um den HashMap-Schlüssel (mapEntry.getKey) als Seriennummer und ziehen Sie das Gift_product-Objekt aus 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

Dies funktioniert für mich (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>