我正在从 JSON 对象的排序数组创建一个 PDF,按任务排序,其中每个对象,例如JSON.arr[0] == i
,包含备忘录、费率、金额和任务文本。
仅当当前任务是第一个任务或与上一个任务不同时,我才想在自己的行上显示该任务。 taskText 没有显示任何内容。
<#if JSON?has_content>
<table>
<tr>
<th colspan="5">MEMO</th>
<th>RATE</th>
<th>AMOUNT</th>
</tr>
<#list JSON.arr as i>
<#if i?first>
<#assign task = i.taskText>
<tr><td>${i.taskText}</td></tr>
</#if>
<#if i.taskText != task>
<#assign task = i.taskText>
<tr><td>${i.taskText}</td></tr>
</#if>
<tr>
<td colspan="5">${i.memo}</td>
<td>$${i.rate}</td>
<td>$${i.amount}</td>
</tr>
</#list>
</table>
</#if>
最佳答案
使用内置的 ?is_first
而不是 ?first
。用于检查当前项是否是当前列表中的第一项。
对于其他要求,我建议在循环之前为task
分配一个初始值。很可能任务从未设置为 null
以外的任何值,因此比较失败。
关于javascript - 有条件地在 freemarker 模板中显示行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51026479/