2016-06-09 236 views
0

我有一个列表,我正在迭代,但我想用我自己的计数器。我尝试了几次不成功的尝试来实现我自己的计数器。内置的函数不起作用,因为有些记录会被动态地从列表中过滤掉,但是我只想对未被过滤的记录进行计数。我试着给一个变量分配一个值并递增,但似乎总是重复这个值。如何在freemarker中实现自定义计数器?

示例代码

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

在上面,如果我有5条记录和第三记录被排除的例子则抛出编号关闭。

回答

1

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

<#assign count = 0> 

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

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

+1

增加一个简洁的方法:'<#assign count ++>' – ddekany

+0

这对我正在尝试做的工作!再次感谢。我刚从freemarker开始,所以我仍然掌握了语法和结构。现在我看到了循环之外的情况。 Bonehead在我的角色错误。 –

+0

@JoeUser如果我回答了您的问题,您能否将问题标记为已回答,以便其他用户可以找到答案?谢谢! (和FreeMarker祝你好运!) – ratherblue

相关问题