freemarlker中的容器类型有:
- 哈希表:是实现了TemplateHashModel或者TemplateHashModelEx接口的java对象,经常使用的实现类是SimpleHash,该类实现了TemplateHashModelEx接口。从内部讲它使用一个java.util.Hash类型的对象存储子变量。
- 序列:是实现了TemplateSequenceModel接口的Java对象。经常使用的实现类是SimpleSequence,该类内部使用一个java.util.List类型的对象存储它的子变量。
- 集:是实现了TemplateCollectionModel接口的java对象。通常使用的实现类是SimpleCollection。
模板文件中哈希表的相关操作:
创建一个map,注意key只能是字符串 <#assign testMap={'test1':2335, 'test2':23445}/> 获取map中的值 ${testMap['test1']} 获取map长度 ${testMap?size} 获取map的keys <#assign keys=testMap?keys/> 遍历map 首选获取key的集合 <#list keys as key> key:${key}-value:${testMap['${key}']} </#list> 直接遍历map的第二种方式 <#list testMap?keys as key> key:${key}--value:${testMap['${key}']} </#list> 直接遍历map的values <#list testMap?values as value> ${value} </#list>
模板文件中序列的相关操作:
第一种定义序列的方式 <#assign nums=[1,2,3,4,5,77,8,99]/> 获取序列的长度 ${nums?size} 根据索引获取序列中的值 ${nums[2]} 使用list指令遍历序列 <#list nums as num> ${num} 获取当前元素在序列中的索引 ${num_index} </#list> 第二种定义序列的方式,定义连续的序列, <#assign nums=12..99/> 这种方式定义的序列的内容是12到99, 序列还可以进行拆分 <#assign nums1=nums[1..10]/>