You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ERP系统PDF设计(HTML+Freemarker):如何实现仅在有符合条件订单行时显示完整表格

嗨,这个问题很好解决,我来给你捋清楚~

你当前的代码只判断了order.item是否有内容,但没检查里面有没有quantity大于0的行——所以哪怕所有行的quantity都是0,只要order.item不是空的,表头还是会被渲染出来。

解决思路很简单:先把符合条件的订单行过滤出来,再判断这个过滤后的集合是否有内容,只有当它有内容时,才渲染整个表格(包括表头和行)。

这里用Freemarker的?filter指令就能轻松实现,修改后的代码如下:

<#-- 先过滤出quantity大于0的订单行 -->
<#assign validTranLines = order.item?filter(tranline -> tranline.quantity > 0)>

<#-- 只有当过滤后的集合有内容时,才渲染整个表格 -->
<#if validTranLines?has_content>
<table class="itemtable" style="width: 100%; margin-top: 10px;">
<thead>
<tr>
<th colspan="8">Item</th>
<th align="right" colspan="3">Quantity</th>
</tr>
</thead>
<#list validTranLines as tranline>
<tr>
<td colspan="8">${tranline.item}</td>
<td align="right" colspan="3">${tranline.quantity}</td>
</tr>
</#list>
</table>
</#if>

关键修改点说明:

  • 过滤有效行:用?filter(tranline -> tranline.quantity > 0)把所有quantity大于0的行筛选出来,存到validTranLines变量里
  • 判断渲染时机:只在validTranLines?has_content为真时,才创建整个表格——这样就不会出现空表头的情况了
  • 简化列表渲染:因为已经过滤过了,列表循环的时候不需要再判断tranline.quantity!=0,直接遍历validTranLines就行

这样调整后,就能完美实现你想要的效果:只有存在符合条件的订单行时,才显示整个表格,且表格里只包含这些符合条件的行~

内容的提问来源于stack exchange,提问作者JeppePeppe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.30 15:42:40