测试代码

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

效果如下

【freemaker】之自定义指令通用select模版的更多相关文章

  1. 使用Vue自定义指令实现Select组件

    完成的效果图如下: 一.首先,我们简单布局一下: <template> <div class="select"> <div class="i ...

  2. 【freemaker】之自定义指令<#macro>

    测试代码 @Test public void test07(){ try { root.put("name", "张三"); freemakerUtil.fpr ...

  3. Freemaker 自定义指令和函数

    自定义函数和指令都可以在前台或者后台进行指定. 个人理解:指令的作用,主要是进行页面调整之后进行输出:函数的作用,主要是为了进行运算,返回运算结果供前台展示. (一) 自定义指令 使用以下格式调用自定 ...

  4. 基于SSM3框架FreeMarker自定义指令(标签)实现

    通过之前的Spring MVC 3.0.5+Spring 3.0.5+MyBatis3.0.4全注解实例详解系列文章,我们已经成功的整合到了一起,这次大象将在此基础上对框架中的FreeMarker模板 ...

  5. Vue自定义指令使用场景

    当你第一次接触vue的时候,一定会使用到其中的几个指令,比如:v-if.v-for.v-bind...这些都是vue为我们写好的,用起来相当的爽.如果有些场景不满足,需要我们自己去自定义,那要怎么办呢 ...

  6. 带你走近AngularJS - 创建自定义指令

    带你走近AngularJS系列: 带你走近AngularJS - 基本功能介绍 带你走近AngularJS - 体验指令实例 带你走近AngularJS - 创建自定义指令 ------------- ...

  7. 带你走近AngularJS 之创建自定义指令

    带你走近AngularJS 之创建自定义指令 为什么使用AngularJS 指令? 使用过 AngularJS 的朋友应该最感兴趣的是它的指令.现今市场上的前端框架也只有AngularJS 拥有自定义 ...

  8. Vue.js自定义指令的用法与实例

    市面上大多数关于Vue.js自定义指令的文章都在讲语法,很少讲实际的应用场景和用例,以致于即便明白了怎么写,也不知道怎么用.本文不讲语法,就讲自定义指令的用法. 自定义指令是用来操作DOM的.尽管Vu ...

  9. angularjs自定义指令实现分页插件

    由于最近的一个项目使用的是angularjs1.0的版本,涉及到分页查询数据的功能,后来自己就用自定义指令实现了该功能.现在单独做了个简易的小demo,主要是为了分享自己写的分页功能.注:本实例调用的 ...

随机推荐

  1. DEV GridControl.TableView FocusedRow选中行背景颜色

    上次修改了TableView.RowStyle,导致了一个问题:覆盖了GridControl默认的选中行颜色. 于是需要重写选中行的颜色. 刚开始的想法是: <dxg:TableView> ...

  2. wifidog 配置中文说明

    #网关IDGatewayID default#外部网卡ExternalInterface eth0#无线网卡GatewayInterface eth0#无线IPGatewayAddress 192.1 ...

  3. c# string.format json字符串 formatException错误

    正常字符串的string.format是没问题的但是在拼接json的字符串的时候因为里面包含了 {}  花括号 里面又嵌套了 {0} {1} {2}这些要替换的关键字 所以会报错. 经过百度. 字符串 ...

  4. 51nod1693 水群

    题目链接:51nod1693 水群 题解参考大神的博客:http://www.cnblogs.com/fighting-to-the-end/p/5874763.html 这题时限0.4秒,真的够狠的 ...

  5. dpkg命令的用法

    dpkg 是Debian package的简写,为”Debian“ 操作系统 专门开发的套件管理系统,用于软件的安装,更新和移除. 所有源自"Debian"的Linux的发行版都使 ...

  6. Launch Screen在iOS7/8中的实现

    Launch Screen在iOS7/8中的实现 目前项目中需要解决的问题是: 兼容iOS7和iOS8,之前的版本不需要支持了 实现兼容3.5.4.4.7和5.5寸屏幕,竖屏的Lauch Screen ...

  7. MySQL:日期函数、时间函数总结

    MySQL 获得当前日期时间 函数 获得当前日期+时间(date + time)函数:now() mysql> select now(); +---------------------+ | n ...

  8. [强连通分量] POJ 2186 Popular Cows

    Popular Cows Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 31815   Accepted: 12927 De ...

  9. JavaAppArguments

  10. webix custom component-九宫格

    上篇大致讲了对源码的理解,这篇展示一个初步的九宫格控件.直接上源码: webix.protoUI({ name:"grid", $init:function(config){ co ...