Velocity快速入门——第六章 条件指令

1    if/elseif/else

在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。

2    关系和逻辑运算符

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。






你可能感兴趣的:(Velocity快速入门,条件指令)