处理为null或者不存在的变量

FreeMarker 不能容忍引用不存在的变量,除非明确地告诉它当变量不存在时如何处理。

对程序员而言:一个不能存在的变量和一个是 null 的变量,对于 FreeMarker 来说是
一样的,所以这里丢失所指的包含这两种情况。

不论在哪里引用变量,都可以指定一个默认值来避免变量丢失这种情况,通过在变量名
后面跟着一个!和默认值。


<h1>Welcome ${user!"Anonymous"}!</h1>


就像上面的例子,当user不存在,那他会有个默认值Anonymous。

当然也可以通过放置??在变量名后面来询问 FreeMarker 一个变量是否存在。将它和 if
指令合并,那么如果 user 变量不存在的话将会忽略整个问候代码段:
<#if user??><h1>Welcome ${user}!</h1></#if>


关于多级访问的变量,比如 animals.python.price ,书写代码:animals.python.price!0,仅当 animals.python 存在而仅仅最后一个子变量 price 可能不存在。
如果 animals 或者 python不存在,那么模板处理将会以“未定义的变量”错误停止。为了防止这种情况的发生,可以这样来书写代码(animals.python.price)!0 。

这种情况下当 animals 或python 不存在时表达式的结果仍然是 0。

对于??也是同样用来的处理这种逻辑的:
animals.python.price??对比(animals.python.price)??

猜你喜欢

转载自liyixing1.iteye.com/blog/2299296
今日推荐