2012-05-23 14 views
8

È necessario accedere al 1 ° e al 2 ° elemento di un elenco nel modello.Accesso agli elementi per indice in un modello FTL

Codice mio Java:

myMap.put("key", Arrays.asList("val1", "val2"); 

mio FTL Template:

<#list myMap?keys as key> 
${myMap[key][0]}, ${myMap[key][1]} 

< - la linea precedente non riesce con l'espressione indefinita sul myMap [tasto] [0]. Ho controllato e myMap [chiave] è una SimpleSequence. Inoltre, ho provato $ {myMap [chiave]? First} e questo ha fallito con lo stesso errore. Qualche idea?

+0

Ho appena fatto qualcosa di simile e ho assegnato prima un incarico. Come <#assign x = myMap [chiave]> Ha funzionato per i miei scopi, si spera che sia anche per il tuo. – geekonablog

risposta

4

[0] e [1] vanno bene per questo, ma sembra che la sequenza abbia 0 elementi, o quegli elementi sono null. Cosa stampa ${myMap[key]?size}? A proposito, è possibile scrivere ${myMap[key][0]!'some default'} se si desidera ottenere un valore anche se l'elemento è inesistente o null.

+0

Il problema era un elemento nullo, la sintassi di default ha fatto il trucco! – shameed

2

Il tuo problema è che metti la lista nell'oggetto "myMap" con la chiave: "chiave", poi prova ad accedervi con la chiave: "chiavi".

Questo è il motivo per cui si stavano diventando un'espressione indefinita, per correggerlo:

<#list myMap?key as k> 
${myMap[k][0]}, ${myMap[k][1]} 

o, naturalmente, si può modificare il codice Java per

myMap.put("keys", Arrays.asList("val1", "val2"); 

e utilizzando questo codice FTL come è.

Problemi correlati