如何在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> </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;"> </td> <td style="width: 41px;"> </td> <td> </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
相关产品推荐
相关产品推荐

