Freemarker中的null判断,小坑一枚

上次写到,在Freemarker中日期转换,可以提取成工具方法。主要是Freemarker对null的处理方式,非常坑爹。只要一个对象或对象的属性为null,就报错,虽然不影响界面显示,但控制台和日志总是打印“错误信息”,很是不爽。所以,想写方法判断对象是否为null,再做正确的显示。

    上次写的2个Freemarker函数,实际过程中只用到了第1个,正常。
把int类型的日期转换成字符串
    <#function number_to_ymdhms date>

 <#if date != null>

   <#setting datetime_format="yyyy-MM-dd hh:mm:ss"/>

    <#return date?number_to_datetime/>

 </#if>

 <#return ""/>

</#function>

把date类型的日期转换成字符串
   <#function date_to_ymdhms date>

 <#if date != null>

    <#return date?string('yyyy-MM-dd hh:mm:ss')/>

 </#if>

 <#return ""/>

</#function> 

后来,项目中用到了第2个方法,但是日期没有显示出来,debug发现date不是null,这是为什么呢?

最后确定,date != null 有问题。

结论:number类型(当然包number类型的日期),可以与null比较,即date!=null.
而对象类型,不能直接与null进行比较,应该用date?exists (复数) 。

date类型比较:

<#function date_to_ymdhms date>

 <#if date?exists>

    <#return date?string('yyyy-MM-dd hh:mm:ss')/>

 </#if>

 <#return ""/>

</#function> 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值