freemarker中ftl语言中??、?has_content、!、?if_exists的区别

标签: freemarker ftl语言
17人阅读 评论(0) 收藏 举报
分类:

最近在项目中,出现了一个bug,一开始用的??来判断是否为空,但是报错了,改成?has_content就没错了。

在网上查找原因后,总结如下:
原解答地址:
https://stackoverflow.com/questions/23552151/difference-between-has-content-if-exists-in-freemarker

?? tells if the left hand operand’s value is missing (means it’s Java null or you have an undefined variable there), and gives back false (missing) or true (not missing) accordingly.

?has_content is very much like ??, except it also returns false for an empty string or empty list or empty map. (It doesn’t return false for a 0, boolean false, etc.)

! is used to give a default value when a value is missing, like color!”no color”. If you omit the right hand operand of !, then the default value is an empty string and empty sequence and empty hash on the same time.

?if_exists is the old way of writing ??. Don’t use it.

大意如下:
?? 判断左侧的变量是否丢失,相当于java中的null的判断,或者这个变量是否未定义。
?has_content 非常像??,但是它同时也会对空字符串或空list或空map进行判断。
! 用来给变量一个默认值,例如color!”no color”
?if_exists 是??的老写法,现在不推荐使用。

查看评论

freemarker中exists和if_exists区别及其序列空值的判断

exists:由空值测试运算符的引入,它被废弃了。 exp1?exists 和 exp1??是 一样的, ( exp1)?exists 和(exp1)??也是一样的。...
  • elong490
  • elong490
  • 2014-11-24 13:25:18
  • 7835

freemark if_exists 和 ?? 的区别

${headerData.evaluateTime?if_exists} if_exists 如果存在 返回该变量值,否者不输出<#if headerData.goal ?? &...
  • Wewon_real
  • Wewon_real
  • 2017-05-25 09:52:24
  • 353

freemarker中空值 null的处理 ?exists ?default("")

如果 listBlogPost 为NULL 会报错.加上?exists(是否存在) 或者?default("") 如果为null时默认为空,例子:          ${pageTitl...
  • sz_bdqn
  • sz_bdqn
  • 2013-09-08 13:49:46
  • 12397

freemarker报错之六

1、错误描述 五月 28, 2014 10:32:40 下午 freemarker.log.JDK14LoggerFactory$JDK14Logger error 严重: Template proc...
  • you23hai45
  • you23hai45
  • 2014-05-28 22:35:14
  • 1909

Freemarker中大于小于的用法

1. $("#orderSeq").val("${orderSeq}");   has_content 判断里面有没有值 2.Freemarker中的比较运算符 ...
  • singit
  • singit
  • 2015-10-14 23:23:03
  • 3657

FreeMarker中<#include>和<#import>标签的区别

在使用freemarker作为前端页面模板的应用中,会有很多的freemarker模板页面,这些ftl会在不同的页面中重复使用,一是为了简化布局的管理,二是可以重复使用一些代码。 在freemarke...
  • xieguojun2008
  • xieguojun2008
  • 2013-12-24 16:25:18
  • 8281

freemarker的基本标签的使用与el表达式比较

${selectDto.stuName?ifExists}相当于el表达式的${selectDto.stuName} 设置单选框在selectDto.exact==1时选中 ${(sele...
  • baidu_26783335
  • baidu_26783335
  • 2017-12-18 17:20:59
  • 427

freemarker中处理页面自动四舍五入问题

在开发中很容易忽视一点,输入一个值(可能是小数),输出时如果不做处理,就很容易出现  隐形的BUG。比如,如果从数据库取出一个0.22的数值,一般的输出${x?if_exists?html}, ...
  • l790187749
  • l790187749
  • 2013-12-13 16:12:57
  • 1974

Freemarker: 把 .ftl 换成 .htm 或者 .jsp类型的, 是否也可以让他生成静态的 .htm 或者 .jsp ?

首先,由于要使用freemarker开发几套网站前台页面的模板,所以想把所有可能性都尝试一下。 其实上面的标签大家可能看的别扭或者奇怪,简单来说,就是,第一:现在我要在htm或者jsp页面中...
  • u012759397
  • u012759397
  • 2017-01-05 13:02:54
  • 3317

freemarker(ftl)标签用法

FreeMarker的插值有如下两种类型:1,通用插值${expr};2,数字格式化插值:#{expr}或#{expr;format} ${book.name?if_exists } //用于判断...
  • CSDNzhangtao5
  • CSDNzhangtao5
  • 2016-12-02 10:31:53
  • 3262
    个人资料
    持之以恒
    等级:
    访问量: 567
    积分: 213
    排名: 91万+
    文章存档
    最新评论