【问题标题】:How to implement a custom counter in freemarker?如何在freemarker中实现自定义计数器?
【发布时间】:2016-10-10 16:52:24
【问题描述】:

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

示例代码

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

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

【问题讨论】:

    标签: java freemarker


    【解决方案1】:

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

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

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

    【讨论】:

    • 一种更简洁的递增方式:&lt;#assign count++&gt;
    • 这适用于我想要做的事情!再次感谢。我昨天刚开始使用 freemarker,所以我仍然掌握语法和结构的窍门。现在我明白了,在循环之外是有道理的。我的愚蠢错误。
    • @JoeUser 如果我回答了您的问题,您能否将问题标记为已回答,以便其他用户可以找到它?谢谢! (祝 FreeMarker 好运!)
    • @ratherblue 抱歉耽搁了假期。再次感谢!
    猜你喜欢
    • 2010-11-09
    • 2011-11-13
    • 2014-01-24
    • 1970-01-01
    • 1970-01-01
    • 2010-10-27
    • 2017-09-05
    • 2010-10-19
    • 1970-01-01
    相关资源
    最近更新 更多