在FTL模板中按索引访问元素

时间:2012-05-23 18:11:38

标签: freemarker

需要访问模板中列表的第一个和第二个元素。

我的Java代码:

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

我的FTL模板:

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

&lt; - 上面的行在myMap [key] [0]上的未定义表达式失败。我查了一下,myMap [key]是一个SimpleSequence。另外,试过$ {myMap [key]?first}并且失败并出现同样的错误。有什么想法吗?

2 个答案:

答案 0 :(得分:4)

[0][1]对此很好,但看起来序列中有0个元素,或者这些元素是null${myMap[key]?size}打印什么?顺便说一句,如果您想获得一个值,即使该项目不存在或${myMap[key][0]!'some default'},您也可以写null

答案 1 :(得分:2)

您的问题是您使用密钥将“List”放入“myMap”对象:“key”然后尝试使用密钥访问它:“keys”。

这就是为什么你得到一个未定义的表达式来纠正它:

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

或者您当然可以将您的Java代码更改为

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

并按原样使用ftl代码。