freemarker写select组件(二十二)
一,讲解一
1、宏定义
<#macro select id datas>
<select id="${id}" name="${id}">
<option>---请选择---</option>
<#list datas as data>
<option value="${data}">${data}</option>
</#list>
</select>
</#macro>
2、示例引入
<#import "/inc/select.ftl" as items/> <@items.select id="city" datas=["武汉市","黄石市","黄冈市","荆州市"]/>
3、示例结果
(1)控制台打印结果
<select id="city" name="city">
<option>---请选择---</option>
<option value="武汉市">武汉市</option>
<option value="黄石市">黄石市</option>
<option value="黄冈市">黄冈市</option>
<option value="荆州市">荆州市</option>
</select>
(2)页面显示结果

二,讲解二
1、宏定义
<#macro select id datas value="">
<select id="${id}" name="${id}">
<option>---请选择---</option>
<#list datas as data>
<#if value == data>
<option value="${data}" selected>${data}</option>
<#else>
<option value="${data}">${data}</option>
</#if>
</#list>
</select>
</#macro>
2、页面引入
<@items.select id="zhuanye" datas=["请选择专业","计算机科学与技术","物流工程","英语专业"] value="计算机科学与技术"/>
3、运行结果
(1)控制台
<select id="zhuanye" name="zhuanye">
<option>---请选择---</option>
<option value="请选择专业">请选择专业</option>
<option value="计算机科学与技术" selected>计算机科学与技术</option>
<option value="物流工程">物流工程</option>
<option value="英语专业">英语专业</option>
</select>
(2)页面显示

三,讲解三
1、宏定义
<#macro select id datas value="" key="" text="">
<select id="${id}" name="${id}">
<option>---请选择---</option>
<#list datas as data>
<#if 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 value == data>
<option value="${data}" selected>${data}</option>
<#else>
<option value="${data}">${data}</option>
</#if>
</#if>
</#list>
</select>
</#macro>
2、封装类
/**
* @Title:User.java
* @Package:com.you.freemarker.model
* @Description:
* @author:Youhaidong(游海东)
* @date:2014-6-26 下午10:28:01
* @version V1.0
*/
package com.you.freemarker.model;
/**
* 类功能说明
* 类修改者 修改日期
* 修改说明
* <p>Title:User.java</p>
* <p>Description:游海东个人开发</p>
* <p>Copyright:Copyright(c)2013</p>
* @author:游海东
* @date:2014-6-26 下午10:28:01
* @version V1.0
*/
public class User
{
/**
* 用户号
*/
private int userNo;
/**
* 用户姓名
*/
private String userName;
/**
* 用户年龄
*/
private int userAge;
/**
* @return the userNo
*/
public int getUserNo() {
return userNo;
}
/**
* @param userNo the userNo to set
*/
public void setUserNo(int userNo) {
this.userNo = userNo;
}
/**
* @return the userName
*/
public String getUserName() {
return userName;
}
/**
* @param userName the userName to set
*/
public void setUserName(String userName) {
this.userName = userName;
}
/**
* @return the userAge
*/
public int getUserAge() {
return userAge;
}
/**
* @param userAge the userAge to set
*/
public void setUserAge(int userAge) {
this.userAge = userAge;
}
/**
* <p>Title:</p>
* <p>Description:</p>
* @param userNo
* @param userName
* @param userAge
*/
public User(int userNo, String userName, int userAge) {
super();
this.userNo = userNo;
this.userName = userName;
this.userAge = userAge;
}
/**
* <p>Title:</p>
* <p>Description:</p>
*/
public User() {
super();
}
}
3、页面引入
<@items.select id="user" datas=users key="userNo" text="userName"/>
4、Junit测试方法
/**
*
* @Title:testSelect
* @Description:
* @param:
* @return: void
* @throws
*/
@Test
public void testSelect()
{
List<User> users = Arrays.asList(new User(1,"张三丰",25),
new User(2,"李思思",22),
new User(3,"赵武",23),
new User(4,"刘雪",20),
new User(5,"朱顾",21),
new User(6,"赵武",23),
new User(7,"吴语",24),
new User(8,"血玉",21));
root.put("users", users);
studentPrint("address.ftl");
studentFile("address.ftl","address.html");
}
5、测试结果
(1)控制台打印
<select id="user" name="user">
<option>---请选择---</option>
<option value="1">张三丰</option>
<option value="2">李思思</option>
<option value="3">赵武</option>
<option value="4">刘雪</option>
<option value="5">朱顾</option>
<option value="6">赵武</option>
<option value="7">吴语</option>
<option value="8">血玉</option>
</select>
(2)页面显示

四,讲解四
1、宏定义
<#macro select id datas value="" key="" text="" headKey="" headValue="">
<select id="${id}" name="${id}">
<option>---请选择---</option>
<#if headKey!="">
<option value="${headKey}">${headValue}</option>
</#if>
<#list datas as data>
<#if 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 value == data>
<option value="${data}" selected>${data}</option>
<#else>
<option value="${data}">${data}</option>
</#if>
</#if>
</#list>
</select>
</#macro>
2、引入宏
<@items.select id="username" datas=users key="userNo" text="userName" headKey="0" headValue="其他"/>
3、示例结果
<select id="username" name="username">
<option>---请选择---</option>
<option value="0">其他</option>
<option value="1">张三丰</option>
<option value="2">李思思</option>
<option value="3">赵武</option>
<option value="4">刘雪</option>
<option value="5">朱顾</option>
<option value="6">赵武</option>
<option value="7">吴语</option>
<option value="8">血玉</option>
</select>
五,讲解五
1、宏定义
<#macro select id datas value="" key="" text="" headKey="" headValue="">
<select id="${id}" name="${id}">
<option>---请选择---</option>
<#if headKey!="">
<option value="${headKey}">${headValue}</option>
</#if>
<#if datas?is_hash_ex>
<#local keys=datas?keys/>
<#list keys as 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>
<#if 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 value == data>
<option value="${data}" selected>${data}</option>
<#else>
<option value="${data}">${data}</option>
</#if>
</#if>
</#list>
</#if>
</select>
</#macro>
2、宏引入
<@items.select id="sex" datas={"0":"请选择学历","1":"小学","2":"初中","3":"高中","4":"本科"} />
3、运行结果
<select id="sex" name="sex">
<option>---请选择---</option>
<option value="0">请选择学历</option>
<option value="1">小学</option>
<option value="2">初中</option>
<option value="3">高中</option>
<option value="4">本科</option>
</select>
freemarker写select组件(二十二)的更多相关文章
- freemarker写select组件(二)
freemarker写select组件 1.宏定义 <#macro select id datas value=""> <select id="${id ...
- freemarker写select组件(一)
freemarker写select组件 1.宏定义 <#macro select id datas> <select id="${id}" name=" ...
- freemarker写select组件(五)
freemarker写select组件 1.宏定义 <#macro select id datas value="" key="" text=" ...
- freemarker写select组件(四)
freemarker写select组件 1.宏定义 <#macro select id datas value="" key="" text=" ...
- freemarker写select组件(三)
freemarker写select组件 1.宏定义 <#macro select id datas value="" key="" text=" ...
- freemarker写select组件报错总结(一)
1.具体错误如下 六月 25, 2014 11:26:29 下午 freemarker.log.JDK14LoggerFactory$JDK14Logger error 严重: Template pr ...
- freemarker写select组件报错总结(二)
1.错误描述 六月 25, 2014 11:32:49 下午 freemarker.log.JDK14LoggerFactory$JDK14Logger error 严重: Template proc ...
- freemarker写select组件报错总结(七)
1.错误描述 六月 26, 2014 11:26:27 下午 freemarker.log.JDK14LoggerFactory$JDK14Logger error 严重: Template proc ...
- freemarker写select组件报错总结(六)
1.错误描述 六月 26, 2014 10:53:26 下午 freemarker.log.JDK14LoggerFactory$JDK14Logger error 严重: Template proc ...
随机推荐
- BZOJ 1192: [HNOI2006]鬼谷子的钱袋 [娱乐]
题意: n个数分组,使得小于n的每个数都能表示出来,最少几组 就是“最优集合”的超级弱化版.....每次+=now+1 然后一个貌似科学的方法是n二进制拆分 #include <iostream ...
- BZOJ 2388: 旅行规划 [分块 凸包 等差数列]
传送门 题意: 区间加和询问一段区间内整体前缀和的最大值 刚才还在想做完这道题做一道区间加等差数列结果发现这道就是.... 唯一的不同在于前缀和一段区间加上等差数列后,区间后面也要加上一个常数!!! ...
- Xposed快速hook关键点
0x01 导读 工作中,常常需要针对各种app进行快速代码定位,找到代码修改和调试各种功能,就不得不面对xposed来进行一系列快速定位关键代码的问题了.那么问题来了,如何快速找到代码呢? 这里值这针 ...
- Go终端读写
终端读写 操作终端相关文件句柄常量 os.Stdin:标准输入 os.Stdout:标准输出 os.Stderr:标准错误输出 终端读写实例: package main import ( " ...
- H5动画
1.参考:http://blog.csdn.net/whqet/article/details/42911059?readlog https://developer.mozilla.org/zh-CN ...
- 关于http与https之间的区别
年前的时候进行了一家公司的电话面试两轮,视频面试一轮(已拿到offer),过程中遇到了一个关于http与https的问题,当时回答的并不好,今天将其进行了总结和整理,望读者喜欢: 前言 谷歌在2018 ...
- s5pv210 的启动
1.开发板已启动从0x0获取数据(内部64k的硬盘,里面含有三星固化的BL0段代码),将其读到a8软核中,进行运算,主要用于初始化时钟,96k的内部IRAM.并负责 指定启动设备(通常为外部硬盘),从 ...
- Linux常用命令手册
Linux常用命令手册 NO 分类 PS1 命令名 用法及参数 功能注解 对应章节 1 文件管理 # ls ls -a 列出当前目录下的所有文件,包括以.头的隐含文件 文件管理 # ls ls ...
- 洛谷P1783 海滩防御 分析+题解代码
洛谷P1783 海滩防御 分析+题解代码 题目描述: WLP同学最近迷上了一款网络联机对战游戏(终于知道为毛JOHNKRAM每天刷洛谷效率那么低了),但是他却为了这个游戏很苦恼,因为他在海边的造船厂和 ...
- Arbiter 系统使用说明
Arbiter 系统使用说明 Overview Arbiter是NOI系列赛事的官方评测软件, 由北航的相关人员开发. 在OIer会经历的几场大型比赛中, 除了省选和PKUSC/THUSC不使用Arb ...