使用循环访问 Freemarker 根对象

Accessing Freemarker root objects with loop

使用 Freemarker 和 Java。我的根地图中有如下条目:

DAY_1=2018/05/01
VOLUME_1=123456
VALUE_1=456.78
DAY_2=2018/05/02
VOLUME_2=654321
VALUE_2=876.54
...
DAY_N=2018/05/20
VOLUME_N=555555
VALUE_N=333.44

并希望以逗号分隔的列表输出这些内容,如下所示:

2018/05/01,123456,456.78
2018/05/02,654321,876.54
...
2018/05/20,555555,333.44

我认为这很容易在我的 FTL 模板文件中迭代,使用一个简单的循环迭代器指定键的静态部分 "DAY_" 并连接循环索引中的索引值。

我已经搜索了几个小时来寻找如何执行此操作的策略,并尝试了许多 FTL 编码样式,但除了错误之外一无所获。也许我也想多了。

关于访问此地图数据的简单方法有什么建议吗?

谢谢, 肯

假设 N 至少为 1(否则使用排他结束范围,如 1 ..< N+1):

<#list 1..N as i>
  ${.data_model['DAY_${i?c}']},${.data_model['VOLUME_${i?c}']},${.data_model['VALUE_${i?c}']}
</#list>

或者,有些人更喜欢使用 .vars,它还会检查当前命名空间中的变量以及局部变量和循环变量。

但我建议使用包含 ListMap-s 或 List 个 Java 个 bean 的数据模型。就 FreeMarker 而言,这就是它的本意。