Freemarker 3种循环模式
)
1. map循环
举例:
<#if vo.urlMap??>
<#list vo.urlMap?keys as key>
<li>
<a href="${vo.urlMap[key]!''}">${key!''}</a>
</li>
</#list>
</#if>
vo.urlMap?keys
: 将map
中的key循环(类似keySet
迭代器)- 循环中通过
map[key]
来取的key
对应的value
- 如果需要当前循环下标, 使用
循环对象_index
取即可, 如:key_index
2. list循环
举例:
<#list vo.valueList as value>
<td>${value!''}</td>
</#list>
3. 自定义次数循环
举例:
<!-- 动态长度 -->
<#list 0..(nums?number)!0 as i>
<td>${vo.valueList[i]!''}</td>
</#list>
<!-- 固定长度 -->
<#list 1..100 as i>
<td>${vo.valueList[i]!''}</td>
</#list>
用于配合取出list
中的元素(list长度有时少于预期, 所以自定义次数)
需要注意的是, 由于循环次数和
list
长度解耦了, 要小心数组越界,
(可以通过默认值的方式避免)
如:${(vo.valueList[i])!'无'}
将前面整个用括号括起来会自动判定每一步是否为null