freemarker写select组件(二十二)

本文详细介绍了Freemarker中自定义宏用于生成下拉选择框的方法,包括不同场景下的参数设置与实现方式,并附带了具体示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一,讲解一

假如你现在还在为自己的技术担忧,假如你现在想提升自己的工资,假如你想在职场上获得更多的话语权,假如你想顺利的度过35岁这个魔咒,假如你想体验BAT的工作环境,那么现在请我们一起开启提升技术之旅吧,详情请点击http://106.12.206.16:8080/qingruihappy/index.html

1、宏定义

1 <#macro select id datas>
2      <select id="${id}" name="${id}">
3           <option>---请选择---</option>
4           <#list datas as data>
5               <option value="${data}">${data}</option>
6           </#list>
7      </select>
8 </#macro>

2、示例引入

 

1 <#import "/inc/select.ftl" as items/>
2 <@items.select id="city" datas=["武汉市","黄石市","黄冈市","荆州市"]/>

3、示例结果

(1)控制台打印结果

1 <select id="city" name="city">
2           <option>---请选择---</option>
3               <option value="武汉市">武汉市</option>
4               <option value="黄石市">黄石市</option>
5               <option value="黄冈市">黄冈市</option>
6               <option value="荆州市">荆州市</option>
7  </select>

(2)页面显示结果

 

 二,讲解二

1、宏定义

 1 <#macro select id datas value="">
 2      <select id="${id}" name="${id}">
 3           <option>---请选择---</option>
 4           <#list datas as data>
 5               <#if value == data>
 6                  <option value="${data}" selected>${data}</option>
 7                  <#else>
 8                  <option value="${data}">${data}</option>
 9               </#if>
10           </#list>
11      </select>
12 </#macro>

2、页面引入

1 <@items.select id="zhuanye" datas=["请选择专业","计算机科学与技术","物流工程","英语专业"] value="计算机科学与技术"/>

3、运行结果

(1)控制台

1 <select id="zhuanye" name="zhuanye">
2           <option>---请选择---</option>
3                  <option value="请选择专业">请选择专业</option>
4                  <option value="计算机科学与技术" selected>计算机科学与技术</option>
5                  <option value="物流工程">物流工程</option>
6                  <option value="英语专业">英语专业</option>
7      </select>

(2)页面显示

三,讲解三

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)页面显示

 

 四,讲解四

1、宏定义

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

 

 2、引入宏

1 <@items.select id="username" datas=users key="userNo" text="userName" headKey="0" headValue="其他"/>

3、示例结果

 1 <select id="username" name="username">
 2           <option>---请选择---</option>
 3                <option value="0">其他</option>
 4                    <option value="1">张三丰</option>
 5                    <option value="2">李思思</option>
 6                    <option value="3">赵武</option>
 7                    <option value="4">刘雪</option>
 8                    <option value="5">朱顾</option>
 9                    <option value="6">赵武</option>
10                    <option value="7">吴语</option>
11                    <option value="8">血玉</option>
12      </select>

 

五,讲解五 

1、宏定义

 

 1 <#macro select id datas value="" key="" text="" headKey="" headValue="">
 2      <select id="${id}" name="${id}">
 3           <option>---请选择---</option>
 4           <#if headKey!="">
 5                <option value="${headKey}">${headValue}</option>
 6           </#if>
 7           <#if datas?is_hash_ex>
 8              <#local keys=datas?keys/>
 9              <#list keys as key>
10                   <#if key==value>
11                       <option value="${key}" selected>${datas[key]}</option>
12                   <#else>
13                       <option value="${key}">${datas[key]}</option>
14                   </#if>
15              </#list>
16           <#else>
17              <#list datas as data>
18               <#if key!="">
19                   <#if value == data[key]?string>
20                      <option value="${data[key]}" selected>${data[text]}</option>
21                   <#else>
22                    <option value="${data[key]}">${data[text]}</option>
23                  </#if>
24               <#else>
25                   <#if value == data>
26                      <option value="${data}" selected>${data}</option>
27                  <#else>
28                  <option value="${data}">${data}</option>
29               </#if>
30              </#if> 
31           </#list>
32         </#if>
33           
34      </select>
35 </#macro>

2、宏引入

1 <@items.select id="sex" datas={"0":"请选择学历","1":"小学","2":"初中","3":"高中","4":"本科"} />

3、运行结果

1 <select id="sex" name="sex">
2           <option>---请选择---</option>
3                       <option value="0">请选择学历</option>
4                       <option value="1">小学</option>
5                       <option value="2">初中</option>
6                       <option value="3">高中</option>
7                       <option value="4">本科</option>
8           
9      </select>

 

假如你现在还在为自己的技术担忧,假如你现在想提升自己的工资,假如你想在职场上获得更多的话语权,假如你想顺利的度过35岁这个魔咒,假如你想体验BAT的工作环境,那么现在请我们一起开启提升技术之旅吧,详情请点击http://106.12.206.16:8080/qingruihappy/index.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值