Java Freemarker中的嵌套表达式

Java Freemarker中的嵌套表达式,java,html,freemarker,Java,Html,Freemarker,我想在freemarker中迭代如下列表: <#assign count=myList?size> <#list 0..count as i> ${myList[i].myProperty} </#list> 我也尝试过: ${myList[${i}].myProperty} 我知道我能行 <#list myList as items> 但是我想在顶部进行迭代,因为您试图获取索引等于数组大小的项,所以您得到了一个异常。假设myL

我想在freemarker中迭代如下列表:

<#assign count=myList?size>

<#list 0..count as i>
    ${myList[i].myProperty}
</#list>
我也尝试过:

${myList[${i}].myProperty}
我知道我能行

<#list myList as items>


但是我想在顶部进行迭代,因为您试图获取索引等于数组大小的项,所以您得到了一个异常。假设
myList
集合的大小为3,然后使用数值范围序列表达式
0..sizeOfMyList
将生成从
0
3
的索引,并且索引
3
超出此集合的范围

<#list 0..count-1 as i>
    ${myList[i].myProperty}
</#list>
因此,使用
size-1
从集合中获取所有项目

<#list 0..count-1 as i>
    ${myList[i].myProperty}
</#list>

如果您只需要索引,则可以执行以下操作:

<#list myList as item>
  ${item?index} ${item}
</#list>

${item?index}${item}
(请注意,
?索引
仅自2.3.23起存在;在此之前,请使用遗留的
项索引
变量。)

如果需要,您还可以使用
打破循环


如果确实需要使用索引进行迭代,请使用
,不幸的是,如果列表大小为0,这将失败,因为
0..-1
将生成
[0,-1]
,而不是
[]
@ddekany:当然。如果
myList
为空,它也会失败。我的答案回答了一个问题:为什么会发生这种情况以及如何解决它。顺便说一句,我还提到了您提出的确切解决方案。从那时起,2.3.21引入了专用的end range运算符,即使
计数
为0:
@ddekany:Nice,该运算符也能工作。很高兴知道。
<#list myList as item>
  ${item?index} ${item}
</#list>