测试代码
@Test public void test05(){ try { freemakerUtil.fprint(root, "05.ftl",fn+"05.html"); } catch (Exception e) { e.printStackTrace(); } }
ftl模版文件
<#--加个感叹号可以解决为空的问题--> ${(emp.group)!} <#--加上括号,感叹号解决对象导航为空的问题--> ${(emp.group.name)!"group为空或者name为空"} <br/> <#--感叹号还可以解决未定义为空的问题--> ${(a.b)!("a.b未定义")} <br/> <#--(a.b)?? 判断a.b是否为空--> <#if (a.b)??> 不为空 <#else> 为空 </#if> <br/> ${(a.b)???string}
效果
原文档的解释如下:
在不是顶层变量时,默认值操作符可以有两种使用方式:
product.color!"red"
如果是这样的写法,那么在 product 中,当 color 不存在时(返回 ”red” )将会
被处理, 但是如果连 produce 都不存在时将不会处理。 也就是说这样写时变量 product
必须存在,否则模板就会报错。
(product.color)!"red"
这时,如果当不存在时也会被处理,那就是说如果 product 不存在或者 product
存在而 color 不存在,都能显示默认值 ”red” 而不会报错。本例和上例写法的重要区别
在于用括号时,就允许其中表达式的任意部分可以未定义。
全文完,感谢您的耐心阅读~
欢迎大家关注我的公众号