2010-01-12 12 views
35

¿Se puede hacer algo como esto en una plantilla de velocidad?en velocidad ¿puede iterar a través de un conjunto de entradas de hashmap de java()?

#set ($map = $myobject.getMap()) 
#foreach ($mapEntry in $map.entrySet()) 
    <name>$mapEntry.key()</name> 
    <value>$mapEntry.value()</value> 
#end 

Genera etiquetas en blanco de este modo:

<name></name> 

y

<value></value> 

¿Qué estoy haciendo mal?

+0

¿Lo has probado para ver qué pasa? – Mark

+0

produce etiquetas en blanco y Ayrad

Respuesta

89

Su error se refiere a clave y valor como métodos (con arrastre "()" paréntesis) en lugar de como propiedades. Prueba esto:

#set ($map = $myobject.getMap()) 
#foreach ($mapEntry in $map.entrySet()) 
    <name>$mapEntry.key</name> 
    <value>$mapEntry.value</value> 
#end 

En otras palabras, utilizar una propiedad, como mapEntry.key, o el método, como mapEntry.getKey().

4

Estoy buscando una forma de recorrer un HashMap en velocidad, y esto también funcionará.

#set ($map = $myobject.getMap()) 
#foreach($key in $map.keySet()) 
     <name>$key</name> 
     <value>$resume.get($key)</value> 
#end 

Al igual que la forma en que recorre un HashMap en java.

-1

Para aclarar (no puedo comentar), en general puede usar los métodos de obtención de Java o reemplazarlos por el nombre correspondiente sin una letra minúscula y sin ().

So $mapEntry.getKey() o map.key.

0

Aquí el valor

itemsValue={data1=1,data2=2,data3=3} 

Por lo tanto, tenemos que recorrer el conjunto de valor;

foreach ($key in ${itemsValue.keySet()}) 
    if($itemsValue.get($key)==1) 
     Condition 
    end 
end 

En el código anterior, podemos ver comprobar el valor será como - "datos1, datos2 etc ..." pero después de usar el get(), podemos capaz de obtener el valor de la instancia.

Cuestiones relacionadas