2010-06-15 10 views
5

Mam obiekt HashMap, który dostaję na stronie JSP.Iterowanie nad hashmap w JSP w aplikacji rozpórki

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

Teraz muszę iterować to i wyświetlać zawartość na JSP. Klasa Gift_product zawiera dwa pola: name i price.

Wyjście JSP powinny być

serial no.   product name  price 
17     Doll   67 

Jak mogę to osiągnąć?

+0

Śmieszne ..., ja nie dodać część rodzajowych w źródle (po prostu ponownie sformatowany w kod), ale historia zmian wydaje się nie zgadzać w tym? – rsp

+0

@rsp: czasami generics są interpretowane jako znaczniki html i wycięte z sformatowanego wyjścia. Sformatowanie posta poprawnie jako kodu powoduje ich wyświetlenie. Użyj "Wyświetl źródło" w wersji, aby to zweryfikować. –

Odpowiedz

10

Zapoznaj się z tagiem rozpórki <logic:iterate>. Podczas iteracji nad HashMap, każdy wpis jest java.util.Map.Entry, aby dostać klucz (w tym przykładzie numer seryjny) i wartości (obiekt Gift_product) się używać key i value właściwości tak:

Najpierw ustaw HashSet jak atrybut w twojej klasie działania, np request.setAttribute("gift_hm", gift_hm); a następnie w 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

jest to bezpośrednio uzyskać numer seryjny, który jest w kluczowej części, nazwa produktu, która jest w value.getProdutname() i cena value.getPrice() ... nie całkiem pewny .. – Pedantic

+0

Poprawiłem go, aby wydrukować klucz HashMap (mapEntry.getKey) jako numer seryjny i wyciągnij obiekt Gift_product z 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

Ten działa dla mnie (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>