freemarker处理空值
freemarker处理空值
1、设计思路
(1)封装学生类和课程类
(2)新建学生课程页面ftl文件
(3)创建测试方法
2、封装课程类
Course.java:
/** * @Title:Course.java * @Package:com.you.freemarker.model * @Description:课程封装类 * @author:Youhaidong(游海东) * @date:2014-5-28 下午9:41:41 * @version V1.0 */ package com.you.freemarker.model; /** * 类功能说明 * 类修改者 修改日期 * 修改说明 * <p>Title:Course.java</p> * <p>Description:游海东个人开发</p> * <p>Copyright:Copyright(c)2013</p> * @author:游海东 * @date:2014-5-28 下午9:41:41 * @version V1.0 */ public class Course { /** * 课程名 */ private String courseName; /** * @return the courseName */ public String getCourseName() { return courseName; } /** * @param courseName the courseName to set */ public void setCourseName(String courseName) { this.courseName = courseName; } /** * <p>Title:</p> * <p>Description:有参构造函数</p> * @param courseName */ public Course(String courseName) { super(); this.courseName = courseName; } /** * <p>Title:</p> * <p>Description:无参构造函数</p> */ public Course() { super(); } }
3、封装学生类
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; /** * 课程 */ private Course course; /** * @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; } /** * @return the course */ public Course getCourse() { return course; } /** * @param course the course to set */ public void setCourse(Course course) { this.course = course; } } /** * @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; /** * 课程 */ private Course course; /** * @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; } /** * @return the course */ public Course getCourse() { return course; } /** * @param course the course to set */ public void setCourse(Course course) { this.course = course; } }
4、新建学生课程页面ftl文件
course.ftl:
<html> <head> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> <title>学生信息</title> </head> <body> 姓名:${student.studentName} 性别:${student.studentSex} 年龄:${student.studentAge} 生日:${(student.studentBirthday)?string("yyyy-MM-dd")} 地址:${student.studentAddr} QQ:${student.studentQQ} 课程:${student.course!} </body> </html>
5、创建测试方法
/** * 测试freemarker处理空值 * @Title:testCourse * @Description: * @param: * @return: void * @throws */ @Test public void testCourse() { //freemarker不会处理空值 root.put("student", new Student("张三丰","男",16,new Date(1988-12-12),"湖北省武汉市武昌洪山区",78451214)); studentPrint("course.ftl"); }
6、运行结果
<html> <head> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> <title>学生信息</title> </head> <body> 姓名:张三丰 性别:男 年龄:16 生日:1970-01-01 地址:湖北省武汉市武昌洪山区 QQ:78,451,214 课程: </body> </html>
freemarker处理空值的更多相关文章
- FreeMarker的空值运算符和逻辑运算符
1.空值处理运算符 如果你在模板中使用了变量但是在代码中没有对变量赋值,那么运行生成时会抛出异常.但是有些时候,有的变量确实是null,怎么解决这个问题呢? 判断某变量是否存在:“??” 用法为:va ...
- freemarker中空值 null的处理 ?exists ?if_exists ?default(“”)
exists:由空值测试运算符的引入,它被废弃了. exp1?exists 和 exp1??是一样的, ( exp1)?exists 和(exp1)??也是一样的. if_exists:由默认值运算符 ...
- FreeMarker 的空值处理 , 简单理解 , 不用TMD就会忘记
NO.1 而对于FreeMarker来说,null值和不存在的变量是完全一样的 NO.2 ! 指定缺失变量的默认值 返回String NO.3 ?? 判断变量是否存在 返回boolean NO.4 $ ...
- 默认值操作符(Freemarker的空值处理)
默认值操作符: 使用形式例如: userName!default_expr 或 userName! 或 (userName)!default_expr 或 (userName)! 这个操作符允许你为可 ...
- Freemarker中空值 null的处理++++定义数组
http://blog.java-zone.org/archives/800.html <#list listBlogPost as blogPost> </#list> 如果 ...
- freemarker中空值“”,null值的判断
原文:http://zhousheng193.iteye.com/blog/1319772 <#if letVo.manageScore!=""> ${html('${ ...
- FreeMarker标签与使用
模板技术在现代的软件开发中有着重要的地位,而目前最流行的两种模板技术恐怕要算freemarker和velocity了,webwork2.2对两者都有不错的支持,也就是说在webwork2中你可以随意选 ...
- Spring MVC 学习总结(七)——FreeMarker模板引擎与动态页面静态化
模板引擎可以让程序实现界面与数据分离,业务代码与逻辑代码的分离,这就提升了开发效率,良好的设计也使得代码复用变得更加容易.一般的模板引擎都包含一个模板解析器和一套标记语言,好的模板引擎有简洁的语法规则 ...
- [转]一篇很全面的freemarker教程
copy自http://demojava.iteye.com/blog/800204 以下内容全部是网上收集: FreeMarker的模板文件并不比HTML页面复杂多少,FreeMarker模板文件主 ...
随机推荐
- template.compile()方法
template.compile(source, options) source:必传,渲染模板的内容. options:可选,通常不传.(其实是我还没研究明白) return:一个渲染函数. 示例如 ...
- JAVA并发编程学习笔记------锁顺序死锁
一.需求描述: 将资金从一个账户转移到另一个账户. 二.程序实现: (1)账户类: public class Account { private long account; public Accoun ...
- javascript 中 dom.getAttribute("value") 与dom.value的差异
dom 是一个 input type="text" 手动修改 input 的值, 使用 dom.getAttribute("value") 只能得到 html ...
- Go笔记-结构体
[定义] type identifier struct{ field1 type1 field2 type2 ... } // 声明 var s identifier identifier.field ...
- Swing EDT引起的客户端卡死
最近调试程序时发现,点击某个界面时会出现卡死的情况,出现的频率还是比较频繁的. 再次出现卡死的情况后,利用jvisualvm查看线程的运行情况,dump操作之后发现线程间出现了死锁: Found on ...
- 济南清北学堂游记 Day 1.
快住手!这根本不是暴力! 刷了一整天的题就是了..上午三道题的画风还算挺正常,估计是第一天,给点水题做做算了.. rqy大佬AK了上午的比赛! 当时我t2暴力写挂,还以为需要用啥奇怪的算法,后来发现, ...
- SPOJ 1812 LCS2 [后缀自动机 DP]
题意: 求多个串<=10的最长连续子串 一个串建SAM,然后其他串在上面走 每个状态记录所有串在这个状态的公共子串的最小值 一个串在上面走的时候记录与每个状态公共子串的最大值,注意出现次数向父亲 ...
- typeof面试题解答
面试题 alert(typeof null); // object alert(typeof undefined); // undefined alert(typeof NaN); // number ...
- ubuntu的网络配置
1,检查网络是否通畅 ping www.baidu.com 2,检查网线是否插好 3,使用ifconfig查看当前活跃网络接口 ifconfig 4,配置IP地址.子网掩码.网关地址 sudo vi ...
- nodejs开启服务器端口
var http = require('http'); var server = http.createServer(function(req, res) { res.writeHead(200, { ...