在 Velocity 中判断对象为 null
在写 Java 项目时,很多时候我们都必须判断一下对象是否为 null
。这个在 Java 代码中,很容易实现。在使用 Velocity 的 Java Web 项目中,很多时候,需要在 Velocity 的模板中,判断一个对象是否为空。那么这时,该如何判断呢?今天D瓜哥就来给大家简单介绍介绍!
方式一
事实上,在 Velocity 中 null
对象是作为 false
来进行进行计算的。那么,判断是否为空就很简单了:
#if( ! $diguage ) <a href="http://www.diguage.com/">"地瓜哥"博客网</a> #end
如果
$diguage
的值为false
,那么,也能通过这个测试。所以,这种方式检查的是引用是否为null
或false
。
方式二
在静默引用(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瓜哥就不再介绍了。
参考资料
- CheckingForNull – Velocity Wiki
- Conditionals – Velocity User Guide
- Quiet Reference Notation – Velocity User Guide
原文链接:null">https://wordpress.diguage.com/archives/142.html
版权声明:非特殊声明均为本站原创作品,转载时请注明作者和原文链接。