測試代碼
@Test public void test08(){ List<Group> groups=Arrays.asList(new Group(1,"山口組")); root.put("groups", groups); List<Employee>ems=Arrays.asList(new Employee(1, "張三1", 15), new Employee(2, "張三2", 20),new Employee(3, "張三3", 80)); root.put("emps", ems); freemakerUtil.fprint(root, "08.ftl", fn+"08.html"); }
select模版自定義一個指令
<#--通用型的select語句--> <#macro select id datas value="" defaultValue="" key="" text=""> <select id="${id}" name="${id}"> <option value="">${defaultValue}</option> <#--判斷對象是否為map--> <#if datas?is_hash_ex> <#--循環map的key值--> <#list datas?keys as key> <#--如果傳進來的key值和默認的值相等,則選中這個值--> <#if key==value> <option value="${key}" selected>${datas[key]}</option> <#else> <option value="${key}">${datas[key]}</option> </#if> </#list> <#else> <#list datas as data> <#--如果key值不為空--> <#if key!=""> <#--傳進來的默認value和通過data的key取出來的值相等,則選中--> <#if value==data[key]?string> <option value="${data[key]}" selected>${data[text]}</option> <#else> <option value="${data[key]}" >${data[text]}</option> </#if> <#else> <#if data==value> <option value="${data}" selected>${data}</option> <#else> <option value="${data}">${data}</option> </#if> </#if> </#list> </#if> <select> </#macro>
調用通用select指令的ftl模版文件
<body> <#--通過起別名的形式調用自定義的指令--> <#import "/include/select.ftl" as my/> <#--對象是集合元素有默認值 --> <@my.select id="person" datas=["張三","李四","王五"] value="李四" defaultValue="請選擇人" /> <#--對象是集合元素無默認值--> <@my.select id="address" datas=["北京","上海","廣州"] defaultValue="請選擇地點"/> <#--對象是集合對象無默認值--> <@my.select id="emp" datas=emps key="id" text="name" defaultValue="請選擇人" /> <#--對象是map對象有默認值--> <@my.select id="sex" datas={"0":"男","1":"女"} value="1" defaultValue="請選擇性別"/> <#--對象是集合對象有默認值--> <@my.select id="group" datas=groups key="id" text="name" value="1" defaultValue="請選擇組"/> <#--測試指令調用--> <#macro test datas key> <#list datas as group> ${group[key]} ${group.name} </#list> </#macro> <@test datas=groups key="name"/> </body>
效果如下