如何在freemarker中实现自定义计数器?

时间:2016-06-09 20:59:34

标签: java freemarker

我有一个我正在迭代的列表,但我想使用自己的计数器。我试过几次不成功的尝试来实现我自己的计数器。内置函数将无法正常运行,因为有些记录会在运行时从列表中过滤掉,但我只想计算未过滤的记录。我尝试为变量赋值并递增,但似乎总是重复该值。

示例代码

 <#list recordList as record>
    <#assign count>${record_index + 1 }</#assign>
    <#if record.isNotExcluded()>            
        <#lt> Record ${count}   
    </#if> 
</#list>

在上面的示例中,如果我有5条记录并且排除了第三条记录,则会抛出编号。

1 个答案:

答案 0 :(得分:4)

您必须在for循环之外分配计数:

<#assign count = 0>

<#list recordList as record>
    <#if record.isNotExcluded()>            
        <#lt> Record ${count}   
        <#assign count = count + 1>
    </#if> 
</#list>

编辑:作为最佳做法,后端发送到视图的数据应该已经过滤掉了排除的项目。这是业务逻辑,不应该在FreeMarker视图中完成。后端应该只发送所需的数据,以便可以避免这样的逻辑。