使用变量作为索引参数访问FreeMarker序列

时间:2014-07-29 22:13:12

标签: freemarker

我的FreeMarker模板包含如下定义的序列:

<#assign monthsLong = ["Nope", "Januar", "Februar", "März", "April", 
                       "Mai", "Juni", "Juli", "August", "September", 
                       "Oktober", "November", "Dezember"]>

如何使用变量作为索引访问monthsLong的单个项目?直接使用数字或使用变量作为索引参数按预期工作:

<#assign i=1> ${monthsLong[i]}
${monthsLong[1]}

但我无法使用我的模型中的变量而不会出现异常:

<#assign index>${selectedMonth}</#assign>
${monthsLong[index]}

如何使用${selectedMonth}的值来访问序列中的特定元素?

1 个答案:

答案 0 :(得分:2)

问题是索引必须是数字,但是如果你打印一些东西并捕获输出(你做了什么),那么它将是一个字符串。您可能只是想要<#assign index = selectedMonth>,它不进行任何转换。 (此外,在您的示例中,您可以只编写${monthsLong[selectedMonth]},但我认为该示例是一种简化。)

(如果selectedMonth也是一个字符串,那么你无法改变,你可以写${monthsLong[selectedMonth?number]}。)