如何在 freemarker 中实现自定义计数器?
How to implement a custom counter in freemarker?
我有一个正在迭代的列表,但我想使用我自己的计数器。我尝试了几次不成功的尝试来实现我自己的计数器。内置函数将不起作用,因为一些记录会被动态地从列表中过滤掉,但我只想计算未过滤的记录。我尝试为变量赋值并递增,但似乎总是重复该值。
示例代码
<#list recordList as record>
<#assign count>${record_index + 1 }</#assign>
<#if record.isNotExcluded()>
<#lt> Record ${count}
</#if>
</#list>
在上面的示例中,如果我有 5 条记录并且排除了第三条记录,那么它会取消编号。
您必须在 for 循环之外分配计数:
<#assign count = 0>
<#list recordList as record>
<#if record.isNotExcluded()>
<#lt> Record ${count}
<#assign count = count + 1>
</#if>
</#list>
编辑:作为最佳实践,后端发送到视图的数据应该已经过滤掉了排除的项目。这是业务逻辑,不应在 FreeMarker 视图中完成。后端应该只发送需要的数据,这样就可以避免这样的逻辑。
我有一个正在迭代的列表,但我想使用我自己的计数器。我尝试了几次不成功的尝试来实现我自己的计数器。内置函数将不起作用,因为一些记录会被动态地从列表中过滤掉,但我只想计算未过滤的记录。我尝试为变量赋值并递增,但似乎总是重复该值。
示例代码
<#list recordList as record>
<#assign count>${record_index + 1 }</#assign>
<#if record.isNotExcluded()>
<#lt> Record ${count}
</#if>
</#list>
在上面的示例中,如果我有 5 条记录并且排除了第三条记录,那么它会取消编号。
您必须在 for 循环之外分配计数:
<#assign count = 0>
<#list recordList as record>
<#if record.isNotExcluded()>
<#lt> Record ${count}
<#assign count = count + 1>
</#if>
</#list>
编辑:作为最佳实践,后端发送到视图的数据应该已经过滤掉了排除的项目。这是业务逻辑,不应在 FreeMarker 视图中完成。后端应该只发送需要的数据,这样就可以避免这样的逻辑。