Java Freemarker:访问列表中的元素,列表中的元素

Java Freemarker:访问列表中的元素,列表中的元素,java,markdown,freemarker,Java,Markdown,Freemarker,我目前有以下结构: List<List<ClusterEntry>> clusters = new ArrayList<List<ClusterEntry>>(); //fill clusters and the list in clusters input.put("clusters", clusters); clusters描述我的集群,cluster.geti包含一个集群中的所有元素。 对于报告,我希望将此结果与freemarker一起输出

我目前有以下结构:

List<List<ClusterEntry>> clusters = new ArrayList<List<ClusterEntry>>();
//fill clusters and the list in clusters
input.put("clusters", clusters);
clusters描述我的集群,cluster.geti包含一个集群中的所有元素。 对于报告,我希望将此结果与freemarker一起输出到.md文件中 目标是拥有与集群一样多的列,并且在每一行中都有相应集群的条目。 这是我的.ftl代码:

<#list clusters as c> | Cluster ${c_index} |
<#list c[c_index] as entry> | ${entry.name} | </#list>
</#list>
但是,这会导致以下错误

The value you try to list is an extended_hash+string (package.ClusterEntry wrapped into f.e.b.StringModel), thus you must specify two loop variables after the "as"; one for the key, and another for the value, like <#... as k, v>).
如何正确访问条目? 如果您已经在这里阅读了本文,那么如何使用这个嵌套循环正确地实现我的列-行结构呢?目前,我假设这将是独立的行,而不是写,因为c已经从集群中保存了当前列表项


至于生成一个好的标记表,这是相当棘手的,因为在开始渲染任何内容之前,您必须知道最长嵌套列表的长度。此外,如果它必须在源代码级别看起来很好,那么您还必须计算出每列的最大宽度。在模板中计算这样的东西不会很好。。。也许您应该在Java中这样做,并将信息传递给数据模型中的模板。

首先:谢谢,这非常有用。第二:我已经做了信息计算。我以前用java做过这个,意思是写一个.csv文件。为此,我计算了最长的行数。那么,我该如何搭配这个漂亮的款式呢?难道没有办法用双重嵌套来填充行和列吗?如果列表中没有条目,我可以将其保留为空?不确定您到底有什么困难,但要将行填充到所需的长度,您可能需要使用类似于see的内容。我想我会将此作为一个单独的问题添加,以明确我当前的问题。感谢您在第一个问题上再次提供帮助!