基本用法

1、 ??

msg?? 返回布尔值。如果msg为null或不存在,返回true;否则返回false。这个特性有两个用法:

  • 三元表达式

    ${(msg??)? string('空', "非空")}
  • if表达式

    <#if msg??>
    msg不存在
    <#else>
    msg存在,值为:${msg}
    </#if>


2、!

  • ${msg!} 若msg不为空,则显示其内容;若为null或不存在,什么也不显示。
  • ${msg!'默认值'} 若msg不为空,则显示其内容若msg为null或不存在时,显示 ‘’默认值’’




易错点

如果将数据换成user对象,且name是它的一个属性,那么就需要注意user本身和user.name二者可能都为null或只有后者为null。为了保险起见,最好的做法就是将user.name用圆括号包起来。例如下面:

  • ${((user.name)??)? string('空', "非空")} user或name只要有其一为空,就显示“空”;若都不为null,就显示“非空”。

  • <#if (user.name)??>
    user 为null或者 user.name 为null
    <#else>
    user和user.name都不为null,值为:${user.name}
    </#if>
    
  • ${(user.name)!} :user或name只要有其一为空,就什么都不显示,也不报错。

  • ${(user.name)!'默认值'} :user或name只要有其一为空,就显示“默认值”。



如果日期可能为nulll,写法为:${(user.createTime?string('yyyy-MM-dd HH:mm:ss'))!}