2010-06-29 18 views
8

Powiel możliwe:
Freemarker iterating over hashmap keysIteracja na mapie w Freemarker

Mam Hash Mapa które zawierają identyfikatory przedmioty jako kluczowych i pozycję obiektów jako wartość. Poniżej znajduje się kod pseudo -

allItems : { 
    12: itemObj1 (id:12, name:myitem1) 
    13: itemObj2 (id:13, name:myitem2) 
    14: itemObj3 (id:14, name:myitem3) 
} 

Na result.ftl Muszę iteracyjne nad tą mapą i uzyskać wartości elementu obiektu. Próbowałem tego podejścia, ale nie mógł się od wartości przedmiotu Przedmiot -

<#list item?keys as it> 
    ${it} = ${item.get(it)[name]} 
</#list> 

Odpowiedz

9

Myślę, że chcesz:

<#list allItems?keys as it> 
    ${it} = ${allItems[it].name} 
</#list> 
+0

To jest właśnie odpowiedź szukałem. Dzięki za udostępnienie! – Cristian

+3

Działa tylko, jeśli klucz jest ciągiem znaków, a nie, jeśli jest klasą –

+1

Od wersji 2.3.25 można używać '<#list allItems jako klucza, elementu> $ {key} = $ {item [nazwa]}'. Działa to również z kluczami innymi niż 'String'. – ddekany

1
<#assign seq=["a","b","c"]> 
<#list seq as l> 
    ${l[1]} 
// It will print b 
    ${l[0]} 
//It will print a 
</#list>