zoukankan      html  css  js  c++  java
  • 【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>

     效果如下

     

  • 相关阅读:
    最短路 dijkstra 优先队列
    树状数组+二分答案查询第k大的数 (团体程序设计天梯赛 L3-002. 堆栈)
    c++优先队列(堆)
    团体程序设计天梯赛 L3-012. 水果忍者
    团体程序设计天梯赛 L2-028. 秀恩爱分得快
    团体程序设计天梯赛 L1-049. 天梯赛座位分配(测试数据+不同方法)
    奇偶校验——设计可以检验错误位置的方法
    奇偶校验的错误概率
    Fibonacci数列时间复杂度之美妙
    团体程序设计天梯赛 L3-016. 二叉搜索树的结构
  • 原文地址:https://www.cnblogs.com/gyjx2016/p/6025577.html
Copyright © 2011-2022 走看看