freemarker写select组件(三)
freemarker写select组件
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)页面显示
freemarker写select组件(三)的更多相关文章
- 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=""> <select id="${id ...
- freemarker写select组件报错总结(一)
1.具体错误如下 六月 25, 2014 11:26:29 下午 freemarker.log.JDK14LoggerFactory$JDK14Logger error 严重: Template pr ...
- freemarker写select组件报错总结(三)
1.错误描述 <html> <head> <meta http-equiv="content-type" content="text/htm ...
- freemarker写select组件(二十二)
一,讲解一 1.宏定义 <#macro select id datas> <select id="${id}" name="${id}"> ...
- 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 ...
随机推荐
- Java I/O基础
字节流和字符流的区别,字节流一次读取一个字节,字符流一次读取的是一个Unicode码,读取了2个字节. 可以以文本编辑器打开的可以使用字符流读取,否则用字符流读取可能就会出错.图像文件就需要用字节流读 ...
- bzoj 3864: Hero meet devil [dp套dp]
3864: Hero meet devil 题意: 给你一个只由AGCT组成的字符串S (|S| ≤ 15),对于每个0 ≤ .. ≤ |S|,问 有多少个只由AGCT组成的长度为m(1 ≤ m ≤ ...
- UOJ Round #15 [构造 | 计数 | 异或哈希 kmp]
UOJ Round #15 大部分题目没有AC,我只是水一下部分分的题解... 225[UR #15]奥林匹克五子棋 题意:在n*m的棋盘上构造k子棋的平局 题解: 玩一下发现k=1, k=2无解,然 ...
- pip install 提示"no previously-included directories found matching"及"no previously-included files matching found anywhere in distribution",且偶发无法关联安装 PyPI 库的故障
环境描述: Python 2.7.5 CentOS-7.2 报错现象: (1).在虚拟环境下运行 pip install 命令安装 PyPI 第三方库,出现类似如下告警. Running setu ...
- 代码从stepping stone搬移到内存
为什么要搬移代码?如何搬移代码?arm启动流程回顾:2440:这里我们分析的是从nand flash 启动.2440的启动主要依赖于一个部件(SRAM),又名stepping stone.它的地址为0 ...
- 读书共享 Primer Plus C-part 5
第五章 运算符.表达式和语句 关于+- 的一元运算符和二元运算符的区别 a++:a先创建自身的一个副本,然后a自增1,最后返回副本的值 a+=1: 事实上相当于++a a=a+1: 虽然有点雷同于a+ ...
- 开启Nginx的目录文件列表功能
ngx_http_autoindex_module 此模块用于自动生成目录列表,ngx_http_autoindex_module只在 ngx_http_index_module模块未找到索引文件时 ...
- 【技术干货】git常用命令
2.1 git init语法: git init在当前目录初始化git仓库,适用于尚未使用git管理的项目2.2 git clone语法: git clone <url>例如: git c ...
- nodejs和npm的安装
下载nodejs的压缩包 网址:https://nodejs.org/en/ 下载以tar.xz结尾的包例如:node-v8.9.4-linux-x64.tar.xz 上传包到制定的目录 可以用lrz ...
- C语言学习之插入排序
此前的一些博文分别写了C语言中经典的排序方式,选择排序 冒泡排序 桶排序,此文就写 插入排序吧. 相对于冒泡排序,插入排序就比较方便快捷了.和冒泡 选择排序一样,插入排序也需要比较大小.可以这样理解插 ...