Freemarker:将逗号分隔列表输出为数组

Freemarker: Output comma separated list as an array

我有一个 table,其中有一个字段包含以逗号分隔的订单 ID 列表。我想做的是分别输出每个 ID,这样我就可以使用它们在另一个 table 中查找相应的订单详细信息。

有谁知道这样做的好方法吗?

到目前为止我已经尝试过:

    <#data Alerts_test_table as alerts_test>
    <#filter
    CUSTOMER_ID_=CONTACTS_LIST.CUSTOMER_ID_1>
    <#fields AD_ID_LIST>

    <#assign seq = ['${alerts_test.AD_ID_LIST}']>
    <#list seq?chunk(1) as row><#list row as cell>
    ${cell}
    </#list> </#list>

    </#data>

但这只是将其输出为一行文本。

假设您在 idsString 中有逗号分隔的 ID-s,并且您想要一个接一个地遍历 ID-s。那么:

数据模型(使用 http://try.freemarker.org/ 语法):

idsString = "11, 22, 33"

模板:

<#list idsString?split(r'\s*,\s*', 'r') as idString>
  ${idString}
</#list>

然而,在你发布的模板中我看到了很多奇怪的东西,所以一些 ideas/pointers:

  • 确保 alerts_test.AD_ID_LIST 确实是 String,而不是可以直接列出的 List,无需 ?split-ing。如果它是 String,那么 '${alerts_test.AD_ID_LIST}' 最终与 alerts_test.AD_ID_LIST 相同。通常,您永远不需要空字符串文字和其中的 ${} 。它没有用(但有时有害,因为它将非字符串值转换为字符串)。

  • ?chunk(1) 没有用。 ?chunk 的要点是将一个列表分割成更小的列表,但是如果那些更小的列表是 1 长,那么你还不如只列出原始列表的项目。

  • 没有#data#filter这样的指令。这是一些分叉的 FreeMarker 版本吗?

  • 如果 ID 是一个数字,您需要将其传递给某些需要数字的 API,那么您必须将其转换为 idString?number 之类的数字。