FreeMarker模板循环语句

15

我想在Freemarker模板中创建一个for语句。我正在阅读如何做到这一点的指南 http://freemarker.sourceforge.net/ 但只有列表示例。我应该怎样创建for语句或者foreach?

parameter.put("size", size);

我想在Freemarker模板中创建类似于以下语句的语句

for (int number = 1; number <= size; number++) {

我恐怕你唯一的解决方案就是使用列表语句。你为什么需要其他循环方法呢? - Laabidi Raissi
3个回答

29

从Freemarker手册中,你可以这样做:

<#assign x=3>
<#list 1..x as i>
  ${i}
</#list>

编辑: 注意,如果x为0(或更小),它将向后计数。因此,您大多需要1 ..< x,这将排除x(需要FreeMarker 2.3.22)。


${taskDetailsDto.inputParam[''taskMsg_${i}'']} - mbrc
我认为可以做到。你试过吗? - Laabidi Raissi
taskDetailsDto.inputParam ['listColor_ $ {i}'] 未定义。我不能像那样使用I。有什么办法现在可以使用{i}吗? - mbrc
表达式 taskDetailsDto.inputParam['listColor_' + i] 未定义。必须是表达式 taskDetailsDto.inputParam['listColor_1']。 - mbrc
@mbc:有点晚了,但是这个错误信息意味着在 taskDetailsDto.inputParam 映射中没有“listColor_1”键。 - ddekany
显示剩余2条评论

4
你可以使用list指令:
<ul>
<#list 1..2 as index>
    <li>${index}</li>
</#list>
</ul>

注意:此功能仅适用于Freemarker版本高于2.3.23。 - dev4life

0

这里是 size=2

<#list 0..2 as x>
<#if x gt 0>
${x}
</#if>
</#list>

输出:

1

2

如果大小为零,它将不会打印任何内容。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接