Java 使用循环访问Freemarker根对象
使用Freemarker和Java。我的根映射中有如下条目:Java 使用循环访问Freemarker根对象,java,freemarker,Java,Freemarker,使用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,55555
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
并希望以逗号分隔的列表形式输出,如下所示:
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编码风格,但除了错误之外什么也没有得到。也许我也在想这个
关于访问此地图数据的简单方法有何建议
谢谢,
Ken假设N至少为1(否则使用独占的结束范围,如1..
):
${.data_模型['DAY{i?c}]},${.data_模型['VOLUME{i?c}]},${.data_模型['VALUE{i?c}]}
或者,有些人更喜欢使用.vars
,这也会检查当前名称空间中的变量以及局部变量和循环变量
但是我建议使用一个包含
Map
-s的List
的数据模型,或者使用Java bean的List
。就FreeMarker而言,这就是它的本意。谢谢!这对解决我的问题有很大帮助。我需要弄清楚的最后一件事是如何计算“DAY_xx”条目以提供N值。如果我指定一个大于我的数据集的值,我会得到一个Freemarker“下面的计算结果为null或缺失:“在基于字符串模式的数据_模型的键集中,是否有任何漂亮的功能来计算条目数?没有特殊的功能来提取最高的N。正如我所说,您的数据模型非常不寻常。但是,假设索引范围没有间隙,您可以这样做:…
我对数据模型也不是特别兴奋,可以看到设计与更好的设计实践背道而驰。最后,我添加了一个count键/值对,并在1..N循环范围内使用该值。