freemarker获取封装类中对象的属性
freemarker获取封装类中对象的属性
1、设计思路
(1)封装学生类
(2)创建数据模型
(3)新建student.ftl
(4)运行Junit测试文件,生成HTML文件
2、封装学生类
Student.java:
/** * @Title:Student.java * @Package:com.you.freemarker.model * @Description:学生类 * @author:Youhaidong(游海东) * @date:2014-5-26 下午11:41:05 * @version V1.0 */ package com.you.freemarker.model; import java.io.Serializable; import java.util.Date; /** * 类功能说明 * 类修改者 修改日期 * 修改说明 * <p>Title:Student.java</p> * <p>Description:游海东个人开发</p> * <p>Copyright:Copyright(c)2013</p> * @author:游海东 * @date:2014-5-26 下午11:41:05 * @version V1.0 */ public class Student implements Serializable { /** * @Fields serialVersionUID:序列化 */ private static final long serialVersionUID = 1L; /** * 学生姓名 */ private String studentName; /** * 学生性别 */ private String studentSex; /** * 学生年龄 */ private int studentAge; /** * 学生生日 */ private Date studentBirthday; /** * 学生地址 */ private String studentAddr; /** * QQ */ private long studentQQ; /** * @return the studentName */ public String getStudentName() { return studentName; } /** * @param studentName the studentName to set */ public void setStudentName(String studentName) { this.studentName = studentName; } /** * @return the studentSex */ public String getStudentSex() { return studentSex; } /** * @param studentSex the studentSex to set */ public void setStudentSex(String studentSex) { this.studentSex = studentSex; } /** * @return the studentAge */ public int getStudentAge() { return studentAge; } /** * @param studentAge the studentAge to set */ public void setStudentAge(int studentAge) { this.studentAge = studentAge; } /** * @return the studentBirthday */ public Date getStudentBirthday() { return studentBirthday; } /** * @param studentBirthday the studentBirthday to set */ public void setStudentBirthday(Date studentBirthday) { this.studentBirthday = studentBirthday; } /** * @return the studentAddr */ public String getStudentAddr() { return studentAddr; } /** * @param studentAddr the studentAddr to set */ public void setStudentAddr(String studentAddr) { this.studentAddr = studentAddr; } /** * @return the studentQQ */ public long getStudentQQ() { return studentQQ; } /** * @param studentQQ the studentQQ to set */ public void setStudentQQ(long studentQQ) { this.studentQQ = studentQQ; } /** * <p>Title:</p> * <p>Description:无参构造函数</p> */ public Student() { super(); } /** * <p>Title:</p> * <p>Description:有参构造函数</p> * @param studentName * @param studentSex * @param studentAge * @param studentBirthday * @param studentAddr * @param studentQQ */ public Student(String studentName, String studentSex, int studentAge, Date studentBirthday, String studentAddr, long studentQQ) { super(); this.studentName = studentName; this.studentSex = studentSex; this.studentAge = studentAge; this.studentBirthday = studentBirthday; this.studentAddr = studentAddr; this.studentQQ = studentQQ; } }
3、创建数据模型
Map<String,Object> root = null; /** * * @Title:testStudent * @Description: * @param: * @return: void * @throws */ @Test public void testStudent() { //创建数据模型 root = new HashMap<String,Object>(); root.put("student", new Student("张三丰","男",34,new Date(1988-12-12),"湖北省武汉市武昌洪山区",78451214)); student("student.ftl"); studentFile("student.ftl","student.html"); } /** * * @Title:student * @Description: * @param:@param name * @return: void * @throws */ private void student(String name) { ft.printFtl(name,root); } /** * * @Title:studentFile * @Description: * @param:@param name * @param:@param fileName * @return: void * @throws */ private void studentFile(String name,String fileName) { ft.printFile(name, root, fileName); }
4、新建student.ftl
student.ftl:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>学生信息</title> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="this is my page"> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> </head> <body> 姓名:${student.studentName} 性别:${student.studentSex} 年龄:${student.studentAge} 生日:${(student.studentBirthday)?string("yyyy-MM-dd")} 地址:${student.studentAddr} QQ:${student.studentQQ} </body> </html>
5、运行Junit测试文件,生成HTML文件
6、控制台输出结果
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>学生信息</title> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="this is my page"> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> </head> <body> 姓名:张三丰 性别:男 年龄:34 生日:1970-01-01 地址:湖北省武汉市武昌洪山区 QQ:78,451,214 </body> </html>
freemarker获取封装类中对象的属性的更多相关文章
- freemarker获取封装类中对象的属性(六)
freemarker获取封装类中对象的属性 1.设计思路 (1)封装学生类 (2)创建数据模型 (3)新建student.ftl (4)运行Junit测试文件,生成HTML文件 2.封装学生类 Stu ...
- 利用KVC的方式更方便地获取数组中对象的属性的最值平均值等
直接上代码 输出结果也在相应的代码里标注出来了 //main.m文件 #import <Foundation/Foundation.h> #import "Student.h&q ...
- Java获取未知类型对象的属性
获取未知类型对象的属性通常有两种方式: 一是通过自定义注解的方式,通过获取被注解的属性从而获取属性的值,这种方式也是Spring参数注入的重要实现手段 二是通过反射获取属性的名称,通过属性名从而获取属 ...
- JavaScript中对象的属性
在JavaScript中,属性决定了一个对象的状态,本文详细的研究了它们是如何工作的. 属性类型 JavaScript中有三种不同类型的属性:命名数据属性(named data properties) ...
- java 对list中对象按属性排序
实体对象类 --略 排序类----实现Comparator接口,重写compare方法 package com.tang.list; import java.util.Comparator; publ ...
- springboot中spring.profiles.active来引入多个properties文件 & Springboot获取容器中对象
1. 引入多个properties文件 很多时候,我们项目在开发环境和生成环境的环境配置是不一样的,例如,数据库配置,在开发的时候,我们一般用测试数据库,而在生产环境的时候,我们是用正式的数据, ...
- Vue 改变数组中对象的属性不重新渲染View的解决方案
Vue 改变数组中对象的属性不重新渲染View的解决方案 在解决问题之前,我们先来了解下 vue响应性原理: Vue最显著的一个功能是响应系统-- 模型只是一个普通对象,修改对象则会更新视图.受到ja ...
- array排序(按数组中对象的属性进行排序)
使用array.sort()对数组中对象的属性进行排序 <template> <div> <a @click="sortArray()">降序& ...
- JS 取Json数据中对象特定属性值
解析JSON JSON 数据 var str = '[{"a": "1","b": "2"}, {"a&quo ...
随机推荐
- spring之集合注入
list: <bean id="userAction" class="com.xx.action.UserAction"> <property ...
- Jmeter_脚本参数化与内存溢出的解决方案
这一篇文章随便说一下JMETER的脚本参数化 1:Parameters的两种参数化方法 1.1:函数助手参数化 首先准备你的参数数据.我在bin/data中新建了一个dat文件,记事本另存为修改编码为 ...
- SpringMVC源码情操陶冶-AbstractHandlerMethodMapping
承接前文SpringMVC源码情操陶冶-AbstractHandlerMapping,本文将介绍如何注册HandlerMethod对象作为handler 类结构瞧一瞧 public abstract ...
- HDU [P1704] Rank
传递闭包裸题 但是本题的Floyd一定要优化,不然会T cpp #include <iostream> #include <cstdio> #include <cstri ...
- Appium的iOS环境搭建
操作系统的名称:Mac OS X操作系统的版本:10.13.3 xcode 版本:9.2 java 版本:java8_161 appium destop版本:1.7.3 接下来我们开始踏上搭建Appi ...
- Markdown 安装图解(破解汉化教程)
http://blog.csdn.net/taokai_110/article/details/72934818 终于解决了问题
- pyhton:图像旋转
最近一个作业中要用到图像旋转,分享一下学习过程.如有讲错的地方,恳请指正! 图像旋转,想想真简单啊,不就是将图像矩阵乘上一个旋转平移矩阵就完了吗?实际上还真没这么简单.首先这个旋转平移矩阵怎么获得?通 ...
- 编译预处理命令define
#include 包含指令 将一个源文件嵌入到当前源文件中该点处. #include<文件名> 按标准方式搜索,文件位于C++系统目录的include子目录下 #include" ...
- ipset批量配置iptables
简介: ipset是iptables的扩展,允许你创建匹配整个地址sets(地址集合)的规则.而不像普通的iptables链是线性的存储和过滤,ip集合存储在带索引的数据结构中,这种集合比较大也可以进 ...
- url路径去掉两个opencms
采用刚刚的方法安装OpenCMS之后,站点url中会存在两个opencms,造成访问url路径过长,下面讲解一种去掉两个opencms的方法. 1.去掉第一个opencms 安装时采用ROOT安装,即 ...