【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,主要是为了分享自己写的分页功能.注:本实例调用的 ...
随机推荐
- 51nod 1183 编辑距离(dp)
题目链接:51nod 1183 编辑距离 #include<cstdio> #include<cstring> #include<algorithm> using ...
- springMVC 源码解读系列(一)初始化
先看看DispatcherServlet的类机构: 初始化时序图: servlet初始化会调用 init 方法,换句话说就是springMVC进行初始化的时候首先会去执行HttpServletBean ...
- JDE Develop Server分别安装DV PY PD后WEBSERVER问题
一般安装时一次性安装完DV\PY\PD环境后,再安装WEBSERVER时只需要修改一次配置文件即可,但如果先安装顺序如下: DV->WEBSERVER->PY 此时,配置程序被初始化,必须 ...
- WCF初探-7:WCF服务配置工具使用
在上一篇WCF服务配置中,文章讲解了WCF的配置所需要的基本节点和属性构造,但是对于初学者的我们在编写程序的时候,往往对这些节点的位置和属性不是特别清楚,所以就导致我们的因配置文件错误而不能运行服务程 ...
- 与您共享Linux Kernel 4.8分支首个维护版本
导读 Linux Kernel 4.8正式版于10月2日由Linus Torvalds发布,带来了包括AMDGPU OverDrive支持.NVIDIA Pascal支持.AMDGPU PowerPl ...
- SQLite存储类(数据类型)
SQLite数据类型更普遍,采用动态类型系统. 说是数据类型,更像是存储类,如:INTEGER存储类就包含多种不同长度的整数数据类型 [INTEGER]带符号的整数类型 [REAL]浮点值,小数类型 ...
- String与InputStream相互转换
1.String to InputStream String str = "String与InputStream相互转换"; InputStream in_nocode = ...
- css盒子模型层级3D图
作为前端开发工程师,大家都应该知道盒子模型.下面用一张图来表达3D盒子模型的层级关系 大家可以看到background-color 在background-image的下一层.这个希望对大家有帮助
- Python学习路程day11
SqlAlchemy ORM SQLAlchemy是Python编程语言下的一款ORM框架,该框架建立在数据库API之上,使用关系对象映射进行数据库操作,简言之便是:将对象转换成SQL,然后使用数据A ...
- HDU 4507 吉哥系列故事——恨7不成妻
需要推下平方和的式子..维护个数,和,平方和. #include<iostream> #include<cstdio> #include<cstring> #inc ...