【freemaker】之自定義指令通用select模版


測試代碼

    @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>

 效果如下

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM