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组件(三)的更多相关文章

  1. freemarker写select组件(一)

    freemarker写select组件 1.宏定义 <#macro select id datas> <select id="${id}" name=" ...

  2. freemarker写select组件(五)

    freemarker写select组件 1.宏定义 <#macro select id datas value="" key="" text=" ...

  3. freemarker写select组件(四)

    freemarker写select组件 1.宏定义 <#macro select id datas value="" key="" text=" ...

  4. freemarker写select组件(二)

    freemarker写select组件 1.宏定义 <#macro select id datas value=""> <select id="${id ...

  5. freemarker写select组件报错总结(一)

    1.具体错误如下 六月 25, 2014 11:26:29 下午 freemarker.log.JDK14LoggerFactory$JDK14Logger error 严重: Template pr ...

  6. freemarker写select组件报错总结(三)

    1.错误描述 <html> <head> <meta http-equiv="content-type" content="text/htm ...

  7. freemarker写select组件(二十二)

    一,讲解一 1.宏定义 <#macro select id datas> <select id="${id}" name="${id}"> ...

  8. freemarker写select组件报错总结(二)

    1.错误描述 六月 25, 2014 11:32:49 下午 freemarker.log.JDK14LoggerFactory$JDK14Logger error 严重: Template proc ...

  9. freemarker写select组件报错总结(七)

    1.错误描述 六月 26, 2014 11:26:27 下午 freemarker.log.JDK14LoggerFactory$JDK14Logger error 严重: Template proc ...

随机推荐

  1. python 之协程

    协程: 协程,又称微线程.  是一种用户态的轻量级线程(存在一个线程中,所以没有上下文切换,与同步) 无需线程上下文切换的开销 在线程中,线程切换时需要记住上下文 无需原子操作及同步的开销 没有锁了, ...

  2. <转>年终盘点!2017年超有价值的Golang文章

    马上就要进入2018年了,作为年终的盘点,本文列出了一些2017年的关于Go编程的一些文章,并加上简短的介绍. 文章排名不分先后, 文章也不一定完全按照日期来排列.我按照文章的大致内容分了类,便于查找 ...

  3. BZOJ 2822: [AHOI2012]树屋阶梯 [Catalan数 高精度]

    2822: [AHOI2012]树屋阶梯 Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 779  Solved: 453[Submit][Status] ...

  4. IntelliJ IDEA使用心得之基础篇

    今天和大家分享一个非常好用的Java开发工具-IntelliJ IDEA. 下载地址:https://www.jetbrains.com/idea/ 目录: 1)IntelliJ IDEA使用心得之基 ...

  5. 解决asp.net MVC中 当前上下文中不存在名称“model” 的问题

    在vs2013下打开同事上传的cshtml视图文件报错,出现当前上下文中不存在名称“model”,ViewBag,Url等等,在视图中也没有智能提示了:但是不影响编译运行,只是开发时候比较麻烦,但在同 ...

  6. CentOS安装编译Lua

    Lua介绍 Lua 是一个小巧的脚本语言.是巴西里约热内卢天主教大学(Pontifical Catholic University of Rio de Janeiro)里的一个研究小组,由Robert ...

  7. Navicat的使用

    Navicat的使用 navicat作为一种数据库的操作工具,在工作中使用的频率很高.相比phpMyAdmin而言,无论是从界面操作的易用性上,还是外观上,抑或是IP的配置上都有着很大的突出优势.ph ...

  8. java8 - IO

    一.学习大纲: 1. 字符编码格式 2. 文件操作(实现文件的增.删.改.查等操作) 3. 目录操作(实现目录的增.删.改.查等操作) 4. 数据传输(实现对文件内容的读.写等操作) 二.关联类: 1 ...

  9. 地牢逃脱 (BFS)

    题意:给定一个 n 行 m 列的地牢,其中 '.' 表示可以通行的位置,'X' 表示不可通行的障碍,牛牛从 (x0 , y0 ) 位置出发,遍历这个地牢,和一般的游戏所不同的是,他每一步只能按照一些指 ...

  10. 【BZOJ1565】 植物大战僵尸

    Description Input Output 仅包含一个整数,表示可以获得的最大能源收入.注意,你也可以选择不进行任何攻击,这样能源收入为0. Sample Input 3 2 10 0 20 0 ...