freemarker中遍历list

<#list var as map>
<tr>
	<#list map?keys as itemKey> //关键点
			 <#if itemKey="fieldLabel" && map['type'] == "text" >
					<td >${map[itemKey]}</td>
			 </#if>
			 <#if itemKey="java_lang_String" && map['type'] == "text">
			     	<td >${map[itemKey]}</td>
			 </#if>
			
			<#if itemKey="fieldLabel" &&  map['type'] == "file">
			 	<td  >${map['fieldLabel']}</td>
			</#if>
			 <#if itemKey="java_io_file" && map['type'] == "file">
			     <td >
			 		<#list "${map[itemKey]}"?split(",") as x>  //使用split函数,等同于java中的split函数
			 			 <a href="FlowDownServlet?fileName=${x}">${x}</a>
			 		</#list>
				</td>
			 </#if>
    </#list>
	 <#if  map['type'] == "select">
	 	<td  >${map['fieldLabel']}</td>
	 	<td >
		 <#list form.fields as field>
		 	<#if field.fieldInput.type == "select">
			 	<select name="props['${field.fieldName}']">
			<#list field.items as item>
					<option <#if map['java_lang_String'] == item.value>selected</#if> value="${item.value}">${item.label}</option>
			</#list>
				</select>
			</#if>
		</#list>
		</td>	
	 </#if>
	  
</tr>

</#list>

后台传递过来的数据html

List<LinkedHashMap<String,Object>> var = SubmitManager.getInstance().getProperty(documentId);
rootMap.put("var", var);
template.process(rootMap, out);


之前使用freemarker没有理解它的做用,如今有了进一步的了解,它其实和jstl同样,也是一套页面标签函数,这样就回答了一些人的疑问,想在freemarker中使用jstl,其实freemarker彻底能知足jstl的功能.只不过它有本身的语法,不能直接获取页面request中的参数而已.学习必定要深刻理解,反复实践才行.java

最后留个疑问,我为何要用LinkedHashMap呢?有什么好处吗?