freemarker写select组件

1、宏定义

  1. <#macro select id datas value="" key="" text="">
  2. <select id="${id}" name="${id}">
  3. <option>---请选择---</option>
  4. <#list datas as data>
  5. <#if key!="">
  6. <#if value == data[key]?string>
  7. <option value="${data[key]}" selected>${data[text]}</option>
  8. <#else>
  9. <option value="${data[key]}">${data[text]}</option>
  10. </#if>
  11. <#else>
  12. <#if value == data>
  13. <option value="${data}" selected>${data}</option>
  14. <#else>
  15. <option value="${data}">${data}</option>
  16. </#if>
  17. </#if>
  18. </#list>
  19. </select>
  20. </#macro>

2、封装类

  1. /**
  2. * @Title:User.java
  3. * @Package:com.you.freemarker.model
  4. * @Description:
  5. * @author:Youhaidong(游海东)
  6. * @date:2014-6-26 下午10:28:01
  7. * @version V1.0
  8. */
  9. package com.you.freemarker.model;
  10.  
  11. /**
  12. * 类功能说明
  13. * 类修改者 修改日期
  14. * 修改说明
  15. * <p>Title:User.java</p>
  16. * <p>Description:游海东个人开发</p>
  17. * <p>Copyright:Copyright(c)2013</p>
  18. * @author:游海东
  19. * @date:2014-6-26 下午10:28:01
  20. * @version V1.0
  21. */
  22. public class User
  23. {
  24. /**
  25. * 用户号
  26. */
  27. private int userNo;
  28.  
  29. /**
  30. * 用户姓名
  31. */
  32. private String userName;
  33.  
  34. /**
  35. * 用户年龄
  36. */
  37. private int userAge;
  38.  
  39. /**
  40. * @return the userNo
  41. */
  42. public int getUserNo() {
  43. return userNo;
  44. }
  45.  
  46. /**
  47. * @param userNo the userNo to set
  48. */
  49. public void setUserNo(int userNo) {
  50. this.userNo = userNo;
  51. }
  52.  
  53. /**
  54. * @return the userName
  55. */
  56. public String getUserName() {
  57. return userName;
  58. }
  59.  
  60. /**
  61. * @param userName the userName to set
  62. */
  63. public void setUserName(String userName) {
  64. this.userName = userName;
  65. }
  66.  
  67. /**
  68. * @return the userAge
  69. */
  70. public int getUserAge() {
  71. return userAge;
  72. }
  73.  
  74. /**
  75. * @param userAge the userAge to set
  76. */
  77. public void setUserAge(int userAge) {
  78. this.userAge = userAge;
  79. }
  80.  
  81. /**
  82. * <p>Title:</p>
  83. * <p>Description:</p>
  84. * @param userNo
  85. * @param userName
  86. * @param userAge
  87. */
  88. public User(int userNo, String userName, int userAge) {
  89. super();
  90. this.userNo = userNo;
  91. this.userName = userName;
  92. this.userAge = userAge;
  93. }
  94.  
  95. /**
  96. * <p>Title:</p>
  97. * <p>Description:</p>
  98. */
  99. public User() {
  100. super();
  101. }
  102.  
  103. }

3、页面引入

  1. <@items.select id="user" datas=users key="userNo" text="userName"/>

4、Junit测试方法

  1. /**
  2. *
  3. * @Title:testSelect
  4. * @Description:
  5. * @param:
  6. * @return: void
  7. * @throws
  8. */
  9. @Test
  10. public void testSelect()
  11. {
  12. List<User> users = Arrays.asList(new User(1,"张三丰",25),
  13. new User(2,"李思思",22),
  14. new User(3,"赵武",23),
  15. new User(4,"刘雪",20),
  16. new User(5,"朱顾",21),
  17. new User(6,"赵武",23),
  18. new User(7,"吴语",24),
  19. new User(8,"血玉",21));
  20. root.put("users", users);
  21. studentPrint("address.ftl");
  22. studentFile("address.ftl","address.html");
  23. }

5、测试结果

(1)控制台打印

  1. <select id="user" name="user">
  2. <option>---请选择---</option>
  3. <option value="1">张三丰</option>
  4. <option value="2">李思思</option>
  5. <option value="3">赵武</option>
  6. <option value="4">刘雪</option>
  7. <option value="5">朱顾</option>
  8. <option value="6">赵武</option>
  9. <option value="7">吴语</option>
  10. <option value="8">血玉</option>
  11. </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装饰器

    装饰器可以说是Python中非常重要的特性之一.有些人要么从没使用过装饰器,要么就是对装饰器的使用一知半解.也有些人觉得装饰器很简单:"装饰器不就是那些把函数作为参数并输出一个函数的函数&q ...

  2. 关于C#连接Oracle数据库 尝试加载Oracle客户端时引发BadImageFormatException 如果在安装32位Oracle客户端组件的情况下以64位模式运行,将出现此问题

    这个问题已经困扰了我快一个月了,各种百度,各种博客,可是,一个个都试过了,什么下载32位客户端,配置环境变量什么的,纯属扯犊子,开发环境win10 64位    oracle 11g r2 64位,这 ...

  3. Ubuntu14.04server + LNMP + Zabbix3.4安装教程

    此教程使用的编辑器是vim LNMP安装很简单,跟着步骤走没有问题,就不粘图片了. 安装MYSQL (1)开始安装:apt-get install mysql-server libmysqld-dev ...

  4. BZOJ 3771: Triple [快速傅里叶变换 生成函数 容斥原理]

    题意:n个物品,可以用1/2/3个不同的物品组成不同的价值,求每种价值有多少种方案(顺序不同算一种) [生成函数]: 构造这么一个多项式函数g(x),使得n次项系数为a[n]. 普通型生成函数用于解决 ...

  5. git命令行工作的正确姿势

    git命令行创建并提交新分支到mater分支的常规步骤 git branch new_branch git status 查看修改的文件 git add changed_files git commi ...

  6. unity爬坑记录

    这里记一下平时遇到的unity bug: unity2017最好不要在prefab上面修改它上面的组件参数 最好是拖放到场景之后修改场景内的物体组件参数 完事了apply一下删掉 不这样做的话 可能u ...

  7. mysql有多条记录的单个字段想存为一个字段显示的方法

    SELECT po.id,(SELECT GROUP_CONCAT(mr.member_type) as memberTypeList FROM prod_offer_member_rel mr WH ...

  8. js中的回调函数

    1.你定义的 2.你没有调用 3.但是最终他执行了 例子: 定时器回调函数 setTimeout(function(){ },100); dom元素的回调函数 document.getElementB ...

  9. css渲染(一) 字体和文本

    一.字体属性 1.默认字体系列 chrome/opera:"宋体" firefox:"微软雅黑" safari/IE:Times,"宋体" ...

  10. 剑指offer第七天

    30.连续子数组的最大和 HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学.今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决 ...