<#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>
后台传递过来的数据
List<LinkedHashMap<String,Object>> var = SubmitManager.getInstance().getProperty(documentId); rootMap.put("var", var); template.process(rootMap, out);
以前使用freemarker没有理解它的作用,现在有了进一步的了解,它其实和jstl一样,也是一套页面标签函数,这样就回答了一些人的疑问,想在freemarker中使用jstl,其实freemarker完全能满足jstl的功能.只不过它有自己的语法,不能直接获取页面request中的参数而已.学习一定要深入理解,反复实践才行.
最后留个疑问,我为什么要用LinkedHashMap呢?有什么好处吗?