4. Directives-指令
Reference 允许设计者使用动态的内容,而 directive 使得你可以应用 java 代码来控制你的显
示逻辑,从而达到你所期望的显示效果。
#set
#set directive 被用于设置一个 reference 的值。例如:
#set ( $primate = "monkey" )
#set ( $customer.Behavior = $primate )
赋值左侧的(LHS)必须是一个变量或者属性 reference。右侧(RHS)可以是以下类型中
一种:
右侧 示例
变量 reference
#set ( $customer.Behavior = $primate )
属性 reference #set ( $monkey.Blame = $whitehouse.Leak )
方法 reference #set ( $monkey.Plan = $spindoctor.weave($web) )
String literal
#set ( $monkey.Friend = "monica" )
number literal
#set ( $monkey.Number = 123 )
ArrayList
#set ( $monkey.Say = ["Not", $my, "fault"] )
注意:最后一个例子的取值方法为:$monkey.Say.get(0)
RHS 也可以是一个简单的算术表达式:
#set ( $value = $foo + 1 )
#set ( $value = $bar -1 )
#set ( $value = $foo * $bar )
#set ( $value = $foo / $bar )
如果你的 RHS 是一个 null,VTL 的处理将比较特殊:它将指向一个已经存在的 reference,
这对初学者来讲可能是比较费解的。例如:
#set ( $result = $query.criteria("name") )
The result of the first query is $result
#set ( $result = $query.criteria("address") )
The result of the second query is $result
如果$query.criteria("name")返回一个"bill",而$query.criteria("address")返回的是 null,则显
示的结果如下:
The result of the first query is bill
The result of the first query is bill
看看下面的例子:
#set( $criteria = ["name", "address"] )