【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,主要是为了分享自己写的分页功能.注:本实例调用的 ...
随机推荐
- JQ弹出框移动-插件分享~~~
<script src="js/jQuery8.3.js" type="text/javascript"></script> <s ...
- SSM框架学习之高并发秒杀业务--笔记1-- 项目的创建和依赖
在慕课网上看了Java高并发秒杀API视屏后,觉得这个案例真的让我学到了很多,现在重新自己实现一遍,博客记下,顺便分析其中的要点. 第一步是项目的创建和依赖 利用Maven去创建工程然后导入Idea中 ...
- 配置jdk
java_home :D:\apps\common\jdk\jdk8\jdk18045\jdk1.8.0_45 classpath: .;%JAVA_HOME%\lib\dt.jar;%JAVA_HO ...
- JSP常见指令
JSP常见指令 标签: jspincludeservletjavaappletarchive 2011-11-07 20:07 13193人阅读 评论(3) 收藏 举报 版权声明:本文为博主原创文章, ...
- android WebView总结
http://blog.csdn.net/chenshijun0101/article/details/7045394 http://blog.csdn.net/ethan_xue/article/d ...
- 1900. Brainwashing Device
http://acm.timus.ru/problem.aspx?space=1&num=1900 题目大意: 有N个车站,相邻车站之间形成一个段,这样就有N-1个段,每个段最多可以放一个洗脑 ...
- IT公司100题-tencent-打印所有高度为2的路径
问题描述: 打印所有到叶子节点长度为2的路径 10 / \ 6 16 / \ / \ 4 8 14 18 / \ / \ \ 2 5 12 15 20 / 11 ...
- 分析器错误 MvcApplication 找不到
<%@ Application Codebehind="Global.asax.cs" Inherits="test.MvcApplication" La ...
- Steganography-图片隐写术
今天做DAM的作业,做到图片水印的时候,想起来当初小调同学把言页之庭的种子通过图片发给我.看到下面这个新闻真是觉得碉堡了!!技术宅又一次可以成功而隐晦的表白了!!哈哈哈!! http://war.16 ...
- 【C++ STL编程】queue小例子
STL是标准化组件,现在已经是C++的一部分,因此不用额外安装什么. #include <queue> #include <iostream> using namespace ...