Freemarker复制一个列表



在NetSuite中开发Freemarker。

我有一份发票上的项目清单,所有具有相同第二价值(包装)的项目都要分组。我还没有找到跳过项目的方法(<#CONTINUE>不工作),所以我想创建一个副本的列表记录,通过它的步骤,只添加我想要的:

*
<#assign mylist = record.item>
<#list record.item?sort_by("custcolzab_comp_name","custcolzab_ev_supp_plan","item") as item>
<#if item.custcol_ev_package != cPackage>
<#assign mylist = mylist + item>
</#if>
<#assign cPackage = item.custcol_ev_package>
</#list>
*

上面的代码似乎可以工作,mylist是一个HASH,尽管List会更好。但是现在我不能让mylist打印

您可以使用序列。参见如何使用freemarker删除数组中的重复元素?

所以你的解决方案看起来像:

<#assign seen_group = []>
<#list record.item?sort_by("custcolzab_comp_name","custcolzab_ev_supp_plan","item") as item>
<#assign cPackage = item.custcol_ev_package>
<#if seen_group?seq_contains(cPackage)> <!-- no if body is intentional; skips seen style -->
<#else>
<#assign seen_group = seen_group + [cPackage]>
<h2>Do something with ${cPackage}</h2>
<#list record.item as pkgItem>
<#if pkgItem.custcol_ev_package == cPackage>
<p>Package Item: ${pkgItem.item}</p>
</#if>
</#list>
</#if>
</#list>

最新更新