发布于 2016-05-16 15:30:57 | 383 次阅读 | 评论: 0 | 来源: PHPERZ
在Velocity中,#if指令允许在if语句条件为true时包括文本。例如:
#if( $foo )
<strong>Velocity!</strong>
#end
变量$foo计算决定是否为true,这三种情况下将发生什么:
$foo是boolean(true/false),为true
$foo是字符串或集合,不为null和不为空
$foo是一个不为null的对象(除了字符串或集合)
记住,Velocity context只包含Object,因此,当我们说“boolean”,它将表示为Boolean(类)。
如果条件为true,#if和#end语句之间的内容变成输出。在这种情况下,如果$foo是true,输出将是:“Velocity!”。相反的,如果$foo有一个null值,或者有一个boolean false,条件为false,那么没有输出。
#elseif或#else语句能与#if语句连用。注意,Velocity模板引擎将在第一个条件表达式为true的语句终止。在以下例子中,假设$foo为15,$bar为6.
#if( $foo < 10 )
<strong>Go North</strong>
#elseif( $foo == 10 )
<strong>Go East</strong>
#elseif( $bar == 6 )
<strong>Go South</strong>
#else
<strong>Go West</strong>
#end
在该例子中,$foo大于10,因此前面两个比较失败。接下来$bar与6比较为true,因此输出时Go South。
Velocity使用等价运算符决定变量之间的关系。下面是一个简单的例子来说明如何使用等价运算符。
#set ($foo = "deoxyribonucleic acid")
#set ($bar = "ribonucleic acid")
#if ($foo == $bar)In this case it's clear they aren't equivalent. So...
#else
They are not equivalent and this will be the output.
#end
注意,==的语义与Java中的略有不同,只能用于测试对象是否相等。在Velocity中,等价运算符能直接用于比较数值、字符串或对象。当对象是不同的类时,通过调用每个对象的toString()获取字符串表现形式然后比较。
Velocity也有逻辑AND、OR和NOT运算符。下面例子演示,使用逻辑AND、OR和NOT运算符。
## 逻辑AND
#if( $foo && $bar )
<strong> This AND that</strong>
#end
## 逻辑OR
#if( $foo || $bar )<strong>This OR That</strong>
#end
##逻辑NOT
#if( !$foo )<strong>NOT that</strong>
#end
这些逻辑运算符与Java中的逻辑运算符一致,此处不再累述。需要注意的是$!foo不会应为foo为null而报错。
逻辑运算符也有自己的文本形式的版本:eq、ne、and、or、not、gt、ge、lt和le。