部分转载自
http://blog.csdn.net/pk490525/article/details/7590362
//以下引用官方描述:
//引用
The FreeMarker template language doesn't know the Java language null at all. It doesn't have null keyword, and it can't test if something is null or not.
1.判断是否存在,通过exists关键字或者"??"运算符。都将返回一个布尔值
user.name?exists
user.name??
[html] view plaincopy
<#if user.name?exists>
//TO DO
</#if>
<#if user.age??>
//TO DO
</#if>
2.忽略null值
假设前提:user.name为null
${user.name},异常
${user.name!},显示空白
${user.name!'vakin'},若user.name不为空则显示本身的值,否则显示vakin
${user.name?default('vakin')},同上
${user.name???string(user.name,'vakin')},同上
!语法 :
(1).原理:使用形式概览:unsafe_expr!default_expr或unsafe_expr!或 (unsafe_expr)!default_expr或(unsafe_expr)!
这个操作符允许你为可能不存在的变量指定一个默认值。
(2)例如:假设下面展示的代码中没有名为mouse的变量:
当这样定义时
${mouse!"no mouse"}
<#assign mouse="lala">
${mouse!"no mouse"}
将会输出
no mouse
lala
另外默认值可以是任何类型的表达式,也可以不必是字符串。你也可以这么写:
hits!0或colors!["red", "green", "blue"]。默认值表达式的复杂程度没有严格限制,你还可以这么来写:cargo.weight!(item.weight * itemCount + 10) 。
(3)警告:
如果在!后面有复合表达式,如1 + x,通常使用括号,像${x!(1 + y)}或${(x!1) + y)},这样就根据你的意思来确定优先级。由于FreeMarker 2.3.x版本的源码中的小失误所以必须这么来做。!(作为默认值操作)的优先级非常低。这就意味着${x!1 + y}会被FreeMarker误解为${x!(1 + y)},而真实的意义是${(x!1) + y}。这个源码的错误在FreeMarker 2.4中会得到修正。在编程中注意这个错误,要么就使用FreeMarker 2.4!
如果默认值被省略了,那么结果将会是空串,空序列或空哈希表。(这是FreeMarker允许多类型值的体现)如果想让默认值为0或false,则注意不能省略它。例如:
当这样定义时
(${mouse!})
<#assign mouse="lala">
(${mouse!})
将会输出
()
(lala)
另外注意点详见freemark文档
??语法: Missing value test operator ,测试是否为missing value
unsafe_expr?? :product.color??将只测试color是否为null
(unsafe_expr)??:(product.color)??将测试product和color是否存在null
分享到:
相关推荐
一些很不错的freemark资料及eclipse的freemark插件
freemark开发指南详解freemark开发指南详解freemark开发指南详解freemark开发指南详解freemark开发指南详解
主要介绍了freemark标签的相关基础知识,基本上了解Freemark标签的应用
freemark中文资料 freemark教程 freemark基础和高级教程
freemark ,
Freemark指南:全面介绍Freemark的使用方法,让你的页面已程序完美的结合!
FREEMARK资料,开发入门指南 是开发人员了解FREEMARK的一本入门资料
freemark模板&模版技术&freemark模板&模版技术
freemark标签使用的一些说明.希望对大家有点用。
freemark 2.3.19 中文教程
freemark生成静态页面,直接导入该项目 使用JDK1.6。直接运行代码中的CreateHtmlWebSite.java, 即可在webroot下面生成MyWebSite.html静态页面。
freemark比较实用的手册,中文版 适合快速学习
FreeMark jar包,中文官方文档。FreeMark jar包,中文官方文档。
freemark资料
SpringMVC+Freemark简单整合 不含lib下的jar。
freemark 模板引擎 概述 教程 5分钟入门 pdf
freemark从入门到精通,freemark讲解,从小白到大明白。
springmvc+mybats+freemark(mvn)
freemark学习笔记:在阅读freemark官方文档的过程中记录下的一些笔记。包括自己对freemark的理解以及实践中的经验