首页 > Java, Web开发, 挨踢(IT), 日拱一卒 > 在 Velocity 中判断对象为 null

在 Velocity 中判断对象为 null

2016年2月25日 发表评论 阅读评论 492 人阅读    

在写 Java 项目时,很多时候我们都必须判断一下对象是否为 null。这个在 Java 代码中,很容易实现。在使用 Velocity 的 Java Web 项目中,很多时候,需要在 Velocity 的模板中,判断一个对象是否为空。那么这时,该如何判断呢?今天D瓜哥就来给大家简单介绍介绍!

方式一

事实上,在 Velocity 中 null 对象是作为 false 来进行进行计算的。那么,判断是否为空就很简单了:

#if( ! $diguage )
    <a href="http://www.diguage.com/">"地瓜哥"博客网</a>
#end

如果 $diguage 的值为 false,那么,也能通过这个测试。所以,这种方式检查的是引用是否为 nullfalse

方式二

在静默引用(Quiet References)中,如果引用为 null,则会被计算为空字符串 ""。那么,我们也可以里中这个特性来完成我们的需求:

#if( "$!diguage" == "" )
    <a href="http://www.diguage.com/">"地瓜哥"博客网</a>
#end

这种检查方式,如果 $diguage 为空字符串,则也能通过检查。所以,这个检查方式,实际检查的是引用是否为 null 或者为空字符串 ""

值得一提的是,如果仅仅需要检查引用是否为空字符串 "",可以这样写:

#if( "$diguage" == "" )
    <a href="http://www.diguage.com/">"地瓜哥"博客网</a>
#end

方式三

结合 方式一方式二,可以做到仅仅检查一个用是否为 null

#if( (! $diguage ) && ("$!diguage" == "") )
    <a href="http://www.diguage.com/">"地瓜哥"博客网</a>
#end

这里的逻辑是这样的: (null or false) and (null or > empty-string),从这里就能一眼看出,如果结果想为 true, 则引用 $diguage 必须为 null。因为 false 和空字符串 "" 永远不可能为 true。在D瓜哥看来,这样写,未免有点太复杂了。

方式四

不要直接检查对象对象是否为空,而是使用一个能自解释的方法(self-explaining method)。例如:

#if( $car.empty )
    <a href="http://www.diguage.com/">"地瓜哥"博客网</a>
#end

这是 Shinobu Kawai’s 推荐的解决方案。前提就是必须实现一个如下的一个方法,但是,带来的好处就是可以使模板易读性更强!

public boolean isEmpty()
{
    // 如果车子为空,则返回 true
}

参考资料中,还有其他方法。但是,这些方法相关的类,D瓜哥找了一下,根本没有找到;尝试了一下 #ifnull( $diguage ),模板解析直接就报错了。相比,这些方法都已经不再支持了。所以,D瓜哥就不再介绍了。

参考资料

  1. CheckingForNull – Velocity Wiki
  2. Conditionals – Velocity User Guide
  3. Quiet Reference Notation – Velocity User Guide


作 者: D瓜哥,https://www.diguage.com/
原文链接:https://wordpress.diguage.com/archives/142.html
版权声明:非特殊声明均为本站原创作品,转载时请注明作者和原文链接。

  1. 本文目前尚无任何评论.
  1. 本文目前尚无任何 trackbacks 和 pingbacks.