【问题标题】:Best way to use multiple sequences for table columns in FreeMarker在 FreeMarker 中为表列使用多个序列的最佳方法
【发布时间】:2020-04-27 01:32:24
【问题描述】:

我有两个单独的数据列表(集)我想用来创建一个表

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>

但是我想使用单独的集合并分别填充 ColumnA 和 ColumnsB

您能建议最好的方法吗?

例如:

data.put("set1", SET1)

data.put("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>

所以它将为 ColumnA 合并两个集合

【问题讨论】:

  • 请不要在问题中发布答案。而是添加一个答案。

标签: java html layout freemarker


【解决方案1】:

https://freemarker.apache.org/docs/dgui_template_exp.html#dgui_template_exp_var_sequence

从序列中检索数据

这与哈希相同,但您只能使用方括号语法,括号中的表达式必须计算为数字,而不是字符串。例如获取示例数据模型的第一个动物的名字(记住第一个项目的数字是0,而不是1):animals[0].name

和序列内置size:https://freemarker.apache.org/docs/ref_builtins_sequence.html#ref_builtin_size

尺寸

序列中子变量的数量(作为数值)。序列s 中可能的最高索引是s?size - 1(因为第一个子变量的索引是0)假设序列至少有一个子变量。

如果你想找到最大的尺寸,使用https://freemarker.apache.org/docs/ref_builtins_sequence.html#ref_builtin_min_max

最小,最大

返回序列(或集合)的较小 (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)的大小不同
  • 然后找到最大的序列大小,使用它并检查&lt;#list&gt; 中的空值。见freemarker.apache.org/docs/…
  • 感谢 Jasper,我设法正确填充了两列
  • 如果答案有帮助,请接受它,而不是在评论中感谢我。见stackoverflow.com/help/someone-answers
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-28
  • 1970-01-01
  • 1970-01-01
  • 2016-06-30
  • 1970-01-01
相关资源
最近更新 更多