Java Freemarker中的嵌套表达式
我想在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
<#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>