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 ...
随机推荐
- Power shell 重启IIS
最近根据项目需要写了一段power shell的代码 ,主要功能是批量重启IIS 具体的 Power shell 服务如下: write-output 'Restarting IIS servers ...
- 移动端的弹窗滚动禁止body滚动
前言 最近一个需求是弹窗展示列表,显然是需要一个滚动条的,而滚动到底部就会穿透到body滚动,而阻止默认行为是不行的,这样两个都滑动不了 所以我在点击出现弹窗的时候在body加了以下css让它没有滚动 ...
- 使用jvisualvm来远程观察Java程序及jvisualvm插件[转]
jvisualvm是JDK自带的监控JVM运行状况的工具,利用jvisualvm可以查看JVM的运行.GC情况:线程的运行情况:内存中类及实例的情况等. 使用jvisualvm来远程观察Java程序, ...
- HDU [P1151] Air Raid
二分图匹配求DAG图上的最小路径覆盖 应用了拆点的思想,将DAG图上的每一个点拆成二分图的x集合与y集合,对于一条有向边u->v来说,我们在ux与vy之间连一条边,然后求二分图的最大匹配 DAG ...
- 扩展 KMP
扩展KMP解决这样一些问题: 给定两个字符串 S 和 T(长度分别为 n 和 m),下标从 0 开始,定义extend[i]等于S[i]...S[n-1]与 T 的最长相同前缀的长度,求出所有的ext ...
- CF 246E. Blood Cousins Return [dsu on tree STL]
题意: 一个森林,求k级后代中多少种不同的权值 用set维护每个深度出现的权值 一开始一直在想删除怎么办,后来发现因为当前全局维护的东西里都是当前子树里的,如果要删除那么当前一定是轻儿子,直接清空se ...
- HDU 3595 GG and MM [Every-SG]
传送门 题意: 两个数$x,y$,一个人的决策为让大数减去小数的任意倍数(结果不能为负),出现0的人胜 一堆这样的游戏同时玩 Every-SG 游戏规定,对于还没有结束的单一游戏,游戏者必须对该游戏进 ...
- Chrome浏览器的使用
1 切换Tab 方法一: Ctrl+Tab键,标签页往前循环,或者说往右循环.Ctrl+Shift+Tab键,标签页往后循环,或者说往左循环 方法二: Ctrl + 数字键 Ctrl + 1 : 切换 ...
- ps色彩范围抠章
1.在photoshop打开需要抠公章的图像文件2.使用椭圆形选区工具,ALT+SHIFT+鼠标左键,选择章的范围 2.CTRL+J,复制图层,得到图层1,隐藏背景 3.CTRL+L,调整色阶,拖动两 ...
- 【NOIP2012】 疫情控制
[NOIP2012] 疫情控制 标签: 倍增 贪心 二分答案 NOIP Description H 国有 n 个城市,这 n 个城市用 n-1 条双向道路相互连通构成一棵树, 1 号城市是首都, 也是 ...