Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用循环访问Freemarker根对象_Java_Freemarker - Fatal编程技术网

Java 使用循环访问Freemarker根对象

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

使用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
并希望以逗号分隔的列表形式输出,如下所示:

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循环范围内使用该值。