2012-05-23 9 views
8

Necesidad de acceder al primer y segundo elemento de una lista en la plantilla.Acceda a los elementos por índice en una plantilla FTL

código Mi Java:

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

mi plantilla FTL:

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

< - la línea anterior falla con la expresión no definida en myMap [clave] [0]. Comprobé y myMap [clave] es una secuencia simple. Además, probé $ {myMap [clave]? First} y eso falló con el mismo error. ¿Algunas ideas?

+0

Acabo de hacer algo similar e hice una asignación primero. Me gusta <#assign x = myMap [key]> Funcionó para mis propósitos, espero que también lo sea para el tuyo. – geekonablog

Respuesta

4

[0] y [1] están bien para esto, pero parece que la secuencia tiene 0 elementos, o esos elementos son null. ¿Qué imprime ${myMap[key]?size}? Por cierto, puede escribir ${myMap[key][0]!'some default'} si desea obtener un valor incluso si el artículo no existe o null.

+0

El problema era un elemento nulo, ¡la sintaxis por defecto funcionaba! – shameed

2

Su problema es que coloca la Lista en su objeto 'myMap' con la tecla: "clave", luego intente acceder con la tecla: "claves".

Es por esto que estaba recibiendo una expresión indefinida, para corregirlo:

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

o, por supuesto, usted podría cambiar su código Java para

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

y utilizando un código dt como es.

Cuestiones relacionadas