FreeMarker判断变量或数组是否为空或不存在

2019-02-28  本文已影响8人  左手气球右手书
判断变量是否为空或不存在

数据模型中经常会有可选的变量(也就是说有时并不存在)。 除了一些典型的人为原因导致失误外,FreeMarker 绝不能容忍引用不存在的变量, 除非明确地告诉它当变量不存在时如何处理。这里来介绍两种典型的处理方法:

一个不存在的变量和一个是 null 值的变量, 对于FreeMarker来说是一样的,所以这里所指的"丢失"包含这两种情况。
${user!"visitor"}
<#if user??>
     ${user}
 </#if>

关于多级访问的变量,比如 animals.python.price, 书写代码:animals.python.price!0
当且仅当 animals.python 永远存在, 而仅仅最后一个子变量 price 可能不存在时是正确的 (这种情况下我们假设价格是 0)。如果 animals 或 python 不存在, 那么模板处理过程将会以"未定义的变量"错误而停止。为了防止这种情况的发生, 可以如下这样来编写代码 :

(animals.python.price)!0。

这种情况就是说 animals 或 python 不存在时, 表达式的结果是 0。

对于 ?? 也是同样用来的处理这种逻辑来处理:

(animals.python.price)??
判断数组是否为空或不存在

同上所述:

<#if orgList?? && (orgList?size > 0) >

</#if>
上一篇下一篇

猜你喜欢

热点阅读