如何在FTL(FreeMarker)中将多个产品ID列表合并为Sequence类型列表
在FreeMarker中合并多个Sequence类型列表的实现方案
问题背景
通过EntityQuery从PurchaseOrder表中获取了5个产品ID的Sequence列表(Productid1至Productid5),原查询代码如下:
<#assign Productid1 = EntityQuery.use(delegator).select("ProductId1").from("PurchaseOrder").queryList()> <#assign Productid2 = EntityQuery.use(delegator).select("ProductId2").from("PurchaseOrder").queryList()> <#assign Productid3 = EntityQuery.use(delegator).select("ProductId3").from("PurchaseOrder").queryList()> <#assign Productid4 = EntityQuery.use(delegator).select("ProductId4").from("PurchaseOrder").queryList()> <#assign Productid5 = EntityQuery.use(delegator).select("ProductId5").from("PurchaseOrder").queryList()>
每个列表的元素示例:pid000001、pid0000050、pid0000013、pid0000019、pid0000025、pid000003、pid0000034、pid0000039、pid0000043、pid0000047。
需求:将这5个Sequence类型的列表合并为一个Sequence类型的列表,且不改变元素类型。
实现方案
在FreeMarker中,直接使用+运算符即可拼接多个Sequence列表,拼接结果仍为Sequence类型,且保留原元素的类型和顺序:
<#assign mergedProductIds = Productid1 + Productid2 + Productid3 + Productid4 + Productid5>
可选:去重处理
如果合并后需要去除重复的产品ID,可以在拼接结果后添加?unique指令:
<#assign mergedUniqueProductIds = (Productid1 + Productid2 + Productid3 + Productid4 + Productid5)?unique>
内容的提问来源于stack exchange,提问作者maahi_m
相关产品推荐
相关产品推荐

