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模板文件主 ...
随机推荐
- JMeter基础教程2:正则表达式使用
0. 正则表达式简介 正则表达式,又称规则表达式(Regular Expression,在代码中通常简写为regex.regexp或RE)描述了一种字符串匹配的模式(pattern),可以用来检查一个 ...
- c#监测电脑状态
public class DeviceMonitor { static readonly PerformanceCounter cpuCounter = new PerformanceCounter( ...
- .NET Core 2.0 问题杂记
一. Ubuntu 14.04 安装 1.安装之前请先删除之前的.net core 版本 命令如下: 1.1 获取安装的.net core 版本 sudo apt --installed list | ...
- git的一些常见命令
一.新建代码库 # 在当前目录新建一个Git代码库 $ git init # 新建一个目录,将其初始化为Git代码库 $ git init [project-name] # 下载一个项目和它的整个代码 ...
- k短路模板 POJ2449
采用A*算法的k短路模板 #include <iostream> #include <cstdio> #include <cstring> #include < ...
- BZOJ 3729: Gty的游戏 [伪ETT 博弈论]【学习笔记】
题意: 给定一棵有根树,每个节点有一些石子,每次可以将不多于k的石子移动到父节点 修改一个点的石子数,插入一个点,询问某棵子树是否先手必胜 显然是一个阶梯Nim 每次最多取k个,找规律或者观察式子易发 ...
- HDU 5996 dingyeye loves stone [阶梯Nim]
dingyeye喜欢和你玩石子游戏. dingyeye有一棵nn个节点的有根树,节点编号为00到n−1n−1,根为00号节点.游戏开始时,第ii个节点上有a[i]a[i]个石子.两位玩家轮流操作,每次 ...
- SDN第四次上机作业
1.建立以下拓扑,并连接上ODL控制器. 2.利用ODL下发流表,使得h3在10s内ping不通h1,10s后恢复. 3.借助Postman通过ODL的北向接口下发流表,再利用ODL北向接口查看已下发 ...
- Windows 动态链接库编程
Windows 动态链接库编程 1.介绍Windows操作系统是应用最关的操作系统,因此动态链接库也为程序员所熟悉,即使对于普通的使用者来说,很多时候也会碰到.dll结尾的文件,这就是动态链接库文件 ...
- XAMPP的配置与使用
XAMPP的配置与使用 一.起因 一开始,我在本地手动DIY安装了WAMPP环境,其中经历了很长时间的折腾,原因是独立安装Apache和MySQL,以及PHP的时候,屡次遇到版本兼容问题,我主要的时间 ...