Freemarker动态地将元素添加到数组中

时间:2017-09-12 16:52:55

标签: arrays freemarker

我想在一列中列出我的所有标签名称。在列出它们时,我将每个标记的名称存储到数组tagarray中。在列表下方,我想在<p>内输出整个数组。

        <div>
            <#assign tagarray = []>
            <#list elements as element>
                <#if element.tags??>
                    <#list element.tags as tag>
                        <#if tag.myProperty??>
                            <span class="section-name">${tag.text}</span>
                            <br />
                            <#assign tagarray = tagarray + ["${tag.text}"]>
                        </#if>
                    </#list>
                </#if>
            </#list>
            <p>${tagarray}</p>
        </div>

问题是,这行代码:

<#assign tagarray = tagarray + ["${tag.text}"]>

似乎不起作用。根据一些网站的说法,上面的语法是正确的,所以我不知道它为什么不起作用。

2 个答案:

答案 0 :(得分:1)

分配行在语法上看起来是正确的(尽管你不需要$,你可以只写... + [tag.text],也可以用+=来减少冗长,就像<#assign tagarray += [tag.text]>)。 ${tagarray}将失败,因为不清楚如何格式化序列。也许你想要${tagarray?join(', ')}

另请注意,如果多次添加序列,列出结果将会很慢。但是,在您的用例中可能不会引起关注。

答案 1 :(得分:0)

这里有代码,但是您无法在执行第2步之前将行修改为数组值,在本例中,只有在第2步中处理的值只有多少个,但在第4步中它将添加3个值,然后现在数组值已到,因此第5步执行4次。步骤2仅执行一次。

event.stopPropagation()