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

时间:2017-08-21 14:12:08

标签: freemarker

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

有没有人知道这样做的好方法?

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

    <#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>

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

1 个答案:

答案 0 :(得分:0)

我们假设您在idsString中使用逗号分隔ID-s,并且您希望逐个迭代ID-s。然后:

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

idsString = "11, 22, 33"

模板:

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

然而,在你发布的模板中,我看到很多奇怪的东西,所以有些想法/指点:

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

  • ?chunk(1)没用。 ?chunk的要点是将列表分割为较小的列表,但如果这些较小的列表长1,那么您也可以只列出原始列表中的项目。

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

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