【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>
效果如下

【freemaker】之自定义指令通用select模版的更多相关文章
- 使用Vue自定义指令实现Select组件
完成的效果图如下: 一.首先,我们简单布局一下: <template> <div class="select"> <div class="i ...
- 【freemaker】之自定义指令<#macro>
测试代码 @Test public void test07(){ try { root.put("name", "张三"); freemakerUtil.fpr ...
- Freemaker 自定义指令和函数
自定义函数和指令都可以在前台或者后台进行指定. 个人理解:指令的作用,主要是进行页面调整之后进行输出:函数的作用,主要是为了进行运算,返回运算结果供前台展示. (一) 自定义指令 使用以下格式调用自定 ...
- 基于SSM3框架FreeMarker自定义指令(标签)实现
通过之前的Spring MVC 3.0.5+Spring 3.0.5+MyBatis3.0.4全注解实例详解系列文章,我们已经成功的整合到了一起,这次大象将在此基础上对框架中的FreeMarker模板 ...
- Vue自定义指令使用场景
当你第一次接触vue的时候,一定会使用到其中的几个指令,比如:v-if.v-for.v-bind...这些都是vue为我们写好的,用起来相当的爽.如果有些场景不满足,需要我们自己去自定义,那要怎么办呢 ...
- 带你走近AngularJS - 创建自定义指令
带你走近AngularJS系列: 带你走近AngularJS - 基本功能介绍 带你走近AngularJS - 体验指令实例 带你走近AngularJS - 创建自定义指令 ------------- ...
- 带你走近AngularJS 之创建自定义指令
带你走近AngularJS 之创建自定义指令 为什么使用AngularJS 指令? 使用过 AngularJS 的朋友应该最感兴趣的是它的指令.现今市场上的前端框架也只有AngularJS 拥有自定义 ...
- Vue.js自定义指令的用法与实例
市面上大多数关于Vue.js自定义指令的文章都在讲语法,很少讲实际的应用场景和用例,以致于即便明白了怎么写,也不知道怎么用.本文不讲语法,就讲自定义指令的用法. 自定义指令是用来操作DOM的.尽管Vu ...
- angularjs自定义指令实现分页插件
由于最近的一个项目使用的是angularjs1.0的版本,涉及到分页查询数据的功能,后来自己就用自定义指令实现了该功能.现在单独做了个简易的小demo,主要是为了分享自己写的分页功能.注:本实例调用的 ...
随机推荐
- Js获取后台集合List的值和下标的方法
Js获取后台集合List的值和下标的方法 转载自:http://blog.csdn.net/XiaoKanZheShiJie/article/details/47280449 首先用的是struts2 ...
- MVC发布问题(一直显示目录浏览)
写了一个MVC的Demo,发布之后一直显示目录浏览,始终无法展示网站. 步骤如下: 1.生成解决方案,发布应用程序 2.打开IIS,新建网站,选择发布程序的代码路径 3.设置应用程序池为4.0,集成 ...
- C#驱动及应用
一,使用开源客户端:StackExchange.Redis 二,使用方法: 1,获取访问redis数据库连接,代码如下. /// <summary> /// 获取访问redis数据 ...
- position 定位
position属性是指本体相对于上级的定位,position又分绝对定位和相对定位.他的默认值是static,意味着元素没有被定位,出现在文档流中应该出现的位置.如果用position来布局页面,父 ...
- 横竖屏切换时候Activity的生命周期的总结
1.新建一个Activity,并把各个生命周期打印出来 2.运行Activity,得到如下信息 onCreate--> onStart--> onResume--> 3.按crtl+ ...
- [vijos P1524] 最小监视代价
历时四天(本周三至本周六),本人的第一道网络流题目终于通过了…虽然这么慢才搞懂很大程度是因为脑子笨,但是还是要吐槽一下: (1)选的这道题吧居然是无向图,对于初学者我表示呵呵,昨晚到现在一直在纠结怎么 ...
- 【matlab】将matlab中数据输出保存为txt或dat格式
将matlab中数据输出保存为txt或dat格式 总结网上各大论坛,主要有三种方法. 第一种方法:save(最简单基本的) 具体的命令是:用save *.txt -ascii x x为变量 *.txt ...
- zipalign内存对齐优化
zipalign:android中SDK下tools文件夹 用来对资源文件的内存进行对齐优化 手工命令: 优化:zipalign -v 4 source.apk destination.apk 4: ...
- exec函数族,守护进程,线程同步和互斥
2015.3.2 进程和程序有三点不同:1,存在位置不同,程序:硬盘,磁盘.进程:内存2. 程序是静态的,进程是动态的 执行./a.out -->bash->bash程序调用fork()- ...
- 搜索栏会消失 uisearchbar 狂点消失的问题解决
经过反复试验和错误很多,我发现当searchdisplaycontroller结束搜索,搜索栏会消失,所以我重新插入到搜索栏表头和它为我工作. - (void)searchDisplayControl ...