需要访问模板中列表的第一个和第二个元素。
我的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}并且失败并出现同样的错误。有什么想法吗?
答案 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代码。