Java 在FreeMarker中为表列使用多个序列的最佳方法
我有两个单独的数据列表(集合),我想用它们创建一个表Java 在FreeMarker中为表列使用多个序列的最佳方法,java,html,layout,freemarker,Java,Html,Layout,Freemarker,我有两个单独的数据列表(集合),我想用它们创建一个表 ColumnA ColumnB Value1 Value1 Value2 Value2 Value3 Value3 Value4 Value4 Value5 Value6 我知道我可以通过POJO实现,其中我的集合将是POJO(例如a和b)字段,我可以在模板中调用它们,如: <table> <tr> <
ColumnA ColumnB
Value1 Value1
Value2 Value2
Value3 Value3
Value4 Value4
Value5
Value6
我知道我可以通过POJO实现,其中我的集合将是POJO(例如a和b)字段,我可以在模板中调用它们,如:
<table>
<tr>
<th>ColumnA</th>
<th>ColumnB</th>
</tr>
<tr>
<#list object as c>
<td>${c.a}</td>
<td>${c.b}</td>
</#list>
</tr>
</table>
圆柱
专栏B
${c.a}
${c.b}
但是,我希望使用单独的集合并分别填充ColumnA和ColumnsB
你能告诉我最好的方法吗
例如:
数据输入(“set1”,set1)
数据输入(“set2”,set2)
模板:
<table>
<tr>
<th>ColumnA</th>
<th>ColumnB</th>
</tr>
<#list set1 as c>
<tr><td>${c}</td></tr>
</#list>
<#list set2 as d>
<tr><td>${d}</td></tr>
</#list>
</table>
圆柱
专栏B
${c}
${d}
因此,它将合并ColumnA的两个集合
固定的
<table>
<tr>
<th>ColumnA</th>
<th>ColumnB</th>
</tr>
<#if set1?size < set2?size>
<#list 0..set2?size-1 as i>
<tr><td>${set2[i]}</td></tr>
<tr>
<td>
<#if set1[i]??>
${set1[i]}
<else> ////leave empty string
</#if>
</td>
</tr>
</#list>
</#if>
</table>
圆柱
专栏B
${set2[i]}
${set1[i]}
////留空字符串
这不是一个最终的模板代码,我们需要涵盖其他(如果有的话),但这是我一直在寻找的解决方案请参见
从序列中检索数据
这与哈希相同,但只能使用方括号语法,括号中的表达式必须计算为数字,而不是字符串。例如,要获取示例数据模型的第一个动物的名称(请记住,第一个项目的编号是0,而不是1):animals[0]。name
以及内置的序列大小:
大小
序列中的子变量数(作为数值)。序列s
中可能的最高索引是s?size-1
(因为第一个子变量的索引是0),假设序列至少有一个子变量
如果要查找最大尺寸,请使用
最小值,最大值
返回序列(或集合)的较小(min
)或最大(max
)项。项目必须是所有数字,或者是相同类型的所有日期/时间值(仅日期、仅时间、日期-时间),否则将发生比较错误
这允许您执行以下操作:
<#list 0..<[sequenceA?size, sequenceB?size]?max as i>
<tr>
<td>${sequenceA[i]!""}</td>
<td>${sequenceB[i]!""}</td>
</tr>
</#list>
你好,贾斯珀。通过任何序列进行迭代对我来说都不是问题,但是考虑到seqA/seqB的大小可能会有所不同,如何分别填充ColumnA和ColumnB。因此,我可能会让ColumnA的大小为10个值,而ColumnB(基于seqB)的大小不同。然后找到最大的序列大小,使用它并检查
中的空值。谢谢Jasper,我成功地填充了两列