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. 安装linux下面用来配置网络,防火墙,系统服务等设置的图形小工具Setup

    Setup命令是linux下面用来配置网络,防火墙,系统服务等设置的图形小工具.使用起来非常方便简单,可是centos\redhat最小化安装之后发现setup命令工具用不了. 接下来介绍如何安装se ...

  2. bzoj 4546: codechef XRQRS [可持久化Trie]

    4546: codechef XRQRS 可持久化Trie codechef上过了,bzoj上蜜汁re,看别人说要开5.2e5才行. #include <iostream> #includ ...

  3. Azure ARM (21) Azure订阅的两种管理模式

    <Windows Azure Platform 系列文章目录> 熟悉Azure平台的读者都知道,Microsoft Azure服务管理,分为三个层次: 1.企业服务合同 (Enterpri ...

  4. [实例]JAVA调用微信接口发送图文消息,不用跳到详情页

    package com.test; import java.io.IOException; import java.io.InputStream; import java.io.OutputStrea ...

  5. CentOS 6.5 Web服务器搭建

    安装MySQL 首先,进入终端,输入 [root@localhost ~]# yum install mysql mysql-server 即可安装Mysql 按照成功以后,让MySQL随系统启动 [ ...

  6. HoloLens开发手记-世界坐标系 Coordinate systems

    坐标系 Coordinate systems 全息的核心是,全息应用可以在真实世界中放置全息图形并使得它们看起来和听起来像真实的物体.这涉及到了物体在真实世界中的定位和方向的确定,这对用户来说很重要. ...

  7. 较复杂makefile跟lds脚本程序的编写

    首先看个makefile范例: /*指明工具链,并为其取个简单的别名*/ CC = arm-linux-gcc LD = arm-linux-ld AR = arm-linux-ar OBJCOPY ...

  8. 【JavaWeb】c3p0连接池与MySQL

    正文之前 在之前的文章讲到了传统的JDBC连接MySQL的方式,但是这样的方式在进行多个连接时,就显得效率低下,明显不如连接池的效率,所以我们这次来讲解一下JDBC连接池之一:c3p0 正文 1. 准 ...

  9. Java中InputStream装饰器模式的大家族

    本文写在po主初学JAVA时,在学习inputStream摸不着头脑,受Java IO-InputStream家族 -装饰者模式一文启发,所以在理清思路时写下本文.因为初学,如有错误,望指正. 因为和 ...

  10. 在windows端和linux端安装Git

    一.Git的安装 1. 在windows端 到地址:https://git-scm.com/downloads 选择对应版本下载后,进行傻瓜式安装即可 2.  在linux端 查看是否安装了git,出 ...