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

如何在Advanced PDF/HTML Template中删除单个空(null)行

解决FreeMarker模板中空(null)行的问题

你遇到的问题是遍历列表时出现单个空行,而用line.subTotNew != 0会误删有效行——这是因为那个空行的subTotNew大概率是null而非0,同时部分正常行的subTotNew本身就是0,导致条件判断逻辑错误。

以下是两种针对性的解决方式:

方式1:排除null对象行

如果空行是因为列表中存在null类型的line对象,直接判断line是否存在即可:

<#list item.data_item as line>
    <#if line??>
        <tr>
        <td></td>
        <td colspan="3" rowspan="1"><span style="font-size:8px;"><span style="font-family:Arial,Helvetica,sans-serif;">${line.item}</span></span></td>
        <td style="width: 3px;"><span style="font-family:Arial,Helvetica,sans-serif;"><span style="font-size:9px;">${line.rateCtnDev} / ${line.ratePcsDev}</span></span></td>
        <td><span style="font-family:Arial,Helvetica,sans-serif;"><span style="font-size:9px;">${line.bonusBOnCtn} / ${line.bonusBOnPcs}</span></span></td>
        <td><span style="font-family:Arial,Helvetica,sans-serif;"><span style="font-size:9px;">${line.price?number?string[",###"]}</span></span></td>
        <td><span style="font-family:Arial,Helvetica,sans-serif;"><span style="font-size:9px;">${line.diskon1}</span></span></td>
        <td><span style="font-family:Arial,Helvetica,sans-serif;"><span style="font-size:9px;">${line.diskon2}</span></span></td>
        <td><span style="font-family:Arial,Helvetica,sans-serif;"><span style="font-size:9px;">${line.diskon3?number?string[",###"]}</span></span></td>
        <td><span style="font-family:Arial,Helvetica,sans-serif;"><span style="font-size:9px;">${line.diskon4}</span></span></td>
        <td><span style="font-family:Arial,Helvetica,sans-serif;"><span style="font-size:9px;">${line.diskon5}</span></span></td>
        <td colspan="2" rowspan="1"><span style="font-family:Arial,Helvetica,sans-serif;"><span style="font-size:9px;">${line.subTotNew?number?string[",###"]}</span></span></td>
        <td>&nbsp;</td>
        <td><span style="font-family:Arial,Helvetica,sans-serif;"><span style="font-size:9px;">${line.sisaCtnMod} / ${line.sisaPcsMod} </span></span></td>
        <td style="width: 39px;">&nbsp;</td>
        <td style="width: 41px;">&nbsp;</td>
        <td>&nbsp;</td>
        </tr>
    </#if>
</#list>

方式2:排除无有效数据的行

如果line对象存在但所有字段为空,可通过判断核心字段是否有效来过滤,比如检查item字段是否存在或非空,同时保留subTotNew为0的正常行:

<#list item.data_item as line>
    <#if line.item?? && line.item != "">
        <tr>
        <!-- 原表格内容保持不变 -->
        </tr>
    </#if>
</#list>

也可以组合多个核心字段判断,比如同时检查subTotNew是否不为null:

<#if line.subTotNew??>

这样就能精准删除那单个空行,同时保留所有正常数据行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 13:13:19