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 4566: [Haoi2016]找相同字符 [后缀自动机]
4566: [Haoi2016]找相同字符 Time Limit: 20 Sec Memory Limit: 256 MBSubmit: 275 Solved: 155[Submit][Statu ...
- POJ1743 Musical Theme [后缀自动机]
题意:不重叠最长重复子串 后缀数组做法:http://www.cnblogs.com/candy99/p/6227659.html 后缀自动机的话,首先|Right|>=2 然后min(t[u] ...
- 简单DNA序列组装(非循环子图)
生物信息学原理作业第四弹:DNA序列组装(非循环子图) 原理:生物信息学(孙啸) 大致思想: 1. 这个算法理解细节理解比较困难,建议看孙啸的生物信息学相关章节. 2. 算法要求所有序列覆盖整个目标D ...
- OpenLayer3调用天地图示例
最近,工作中有需要用Openlayer3脚本库调用天地图的wmts服务接口,由于这两个都是刚开始接触,所以是摸着石头过河,遇到了地图显示不了的问题,虽然官网http://www.zjditu.cn/r ...
- 定制化WinPE
1 .首先挂载wim Dism /Mount-WIM /WimFile:D:\install.wim /Index: /MountDir:D:\wimmount 2. 如何要修改WinPE的启动项,可 ...
- GitHub中开启二次验证Two-factor authentication,如何在命令行下更新和上传代码
最近在使用GitHub管理代码,在git命令行管理代码时候遇到一些问题.如果开起了二次验证(Two-factor authentication两个要素认证),命令行会一直提示输入用户名和密码.查找了一 ...
- Docker Centos6 下建立 Docker 桥接网络
cd /etc/sysconfig/network-scripts/; cp ifcfg-eth0 ifcfg-br0 vi ifcfg-eth0 //增加BRIDGE=br0,删除IPADDR,N ...
- maven项目打包的时候,*Mapper.xml 文件会打不不进去解决办法
打包的时候,不同版本的 Eclipse 还有IDEA 会有打包打不进去Mapper.xml 文件,这个时候要加如下代码, 在<build> 标签内加入即可 <resources> ...
- NDK配置debug环境时:Error:FAILURE: Build failed with an exception
Error:FAILURE: Build failed with an exception. * What went wrong: Execution failed for task ':app:ex ...
- Pycharm常用的使用方法
PyCharm是一种Python IDE,带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具,比如调试.语法高亮.Project管理.代码跳转.智能提示.自动完成.单元测试.版本控制. ...