2012-05-23 75 views
8

需要访问模板中列表的第1个和第2个元素。通过FTL模板中的索引访问元素

我的Java代码:

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

我FTL模板:

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

< - 上面的行失败,未定义的表达上MYMAP [键] [0]。我查了一下,myMap [key]是一个SimpleSequence。此外,尝试$ {myMap [key]?first}并失败,并出现相同的错误。有任何想法吗?

+0

我只是做了类似的事情,先做了一个分配。像<#assign x = myMap [key]>它适用于我的目的,希望它也适合您。 – geekonablog

回答

4
[0]

[1]都很好,这一点,但它看起来像,要么所述序列具有0个元素,或这些元素是null${myMap[key]?size}打印什么?顺便说一句,如果你想要得到一个值,即使该项不存在,你也可以编写${myMap[key][0]!'some default'}null

+0

问题是一个空元素,默认的语法有窍门! – shameed

2

你的问题是,你把列表放到你的'myMap'对象中,键值为“key”,然后试着用键值“keys”访问它。

这就是为什么你得到一个不确定的表情,纠正:

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

或你当然可以改变你的Java代码来

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

,并使用FTL代码不变。

相关问题