2010-06-15 24 views
5

Tengo un objeto HashMap que obtengo en una página JSP.Iteración sobre hashmap en JSP en la aplicación struts

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

Ahora necesito repetir esto y mostrar contenido en JSP. La clase Gift_product contiene dos campos: name y price.

salida JSP debe ser

serial no.   product name  price 
17     Doll   67 

¿Cómo puedo lograrlo?

+0

divertido ..., No añadí la parte genéricos en la fuente (acabo reformateado en código) pero el historial de revisión parece estar en desacuerdo en esto? – rsp

+0

@rsp: a veces los genéricos se interpretan como etiquetas html y se recortan de la salida formateada. Formatear la publicación correctamente como código los hace aparecer. Use "Ver fuente" en la revisión para verificar esto. –

Respuesta

10

Mira la barra de struts <logic:iterate>. Cuando iterar sobre un HashMap, cada entrada es un java.util.Map.Entry, para obtener la clave (en este ejemplo el número de serie) y el valor (el objeto Gift_product) fuera utilizar los key y value propiedades como esto:

primer lugar establecer el HashSet como un atributo en su clase de acción, por ejemplo request.setAttribute("gift_hm", gift_hm); y luego en el 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

es directamente obtenerlo número de serie que está en la parte clave, nombre del producto que está en value.getProdutname() y price value.getPrice() ... no estoy seguro .. – Pedantic

+0

Lo revisé para imprimir la tecla HashMap (mapEntry.getKey) como el número de serie y extraiga el objeto Gift_product de 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

Esta funciona para mí (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> 
Cuestiones relacionadas