8

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

我的Java代码:

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

我的 FTL 模板:

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

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

4

2 回答 2

4

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

于 2012-05-23T23:38:31.260 回答
2

您的问题是您使用键将列表放入您的“myMap”对象:“key”然后尝试使用它们的键访问它:“keys”。

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

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

或者当然你可以将你的java代码更改为

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

并按原样使用 ftl 代码。

于 2012-07-18T10:59:37.593 回答