发布于 2016-05-16 15:30:47 | 442 次阅读 | 评论: 0 | 来源: PHPERZ

指令允许模板设计者生成Web网站的动态内容,而指令——易于使用脚本元素能用于创建操作Java代码输出——允许Web设计者真正负责Web网站的外观和内容。

指令总是以#开始。如同引用,指令的名字可以通过{和}符号括起来。通常文本紧随其后。例如以下产生错误:

#if($a==1)true enough#elseno way!#end

在这种情况下,使用花括号分隔#else。

#if($a==1)true enough#{else}no way!#end

1    #set

#set指令用于设置引用的值。值能复制给变量引用或属性引用,这发生在括号中:

#set( $primate = "monkey" )

#set( $customer.Behavior = $primate )

等于号左边必须是一个变量引用或属性引用。右边可以是以下类型:

  • 变量引用

  • 字符串字面值

  • 属性引用

  • 方法引用

  • 数值字面值

  • ArrayList

  • Map

#set( $monkey = $bill ) ## variable reference

#set( $monkey.Friend = "monica" ) ## string literal

#set( $monkey.Blame = $whitehouse.Leak ) ## property reference

#set( $monkey.Plan = $spindoctor.weave($web) ) ## method reference

#set( $monkey.Number = 123 ) ##number literal

#set( $monkey.Say = ["Not", $my, "fault"] ) ## ArrayList

#set( $monkey.Map = {"banana" : "good", "roast beef" : "bad"}) ## Map

注意:ArrayList例子中的元素使用[...]定义操作符,定义在ArrayList类中的方法都可以访问。因此,例如,你可以使用$monkey.Say.get(0)访问第一个元素。

类似,Map的例子,元素定义在{}操作符中,可以使用定义在Map类中的方法访问。因此,例如,你可以使用$monkey.Map.get("banana")访问第一个元素返回一个字符串“good”,或$monkey.Map.banana返回相同值。

等号右边也可以是简单的算术表达式:

#set( $value = $foo + 1 )

#set( $value = $bar - 1 )

#set( $value = $foo * $bar )

#set( $value = $foo / $bar )

如果右边是计算为null的属性或方法引用,它将不赋值给左边。依赖于Velocity的配置。通常这种机制不能够删除已存在的引用。

#set( $result = $query.criteria("name") )

第一个查询的结果是$result
#set( $result = $query.criteria("address") )

第二个查询的结果是$result

如果$query.criteria("name")返回字符串“bill”,而$query.criteria("address")返回null,上面VTL将渲染为:

第一个查询的结果是bill
第二个查询的结果是bill

2    字面值

当使用#set指令时,封闭在双引号里面的字符串字面值将被解析和渲染:

#set( $directoryRoot = "www" )

#set( $templateName = "index.vm" )

#set( $template = "$directoryRoot/$templateName" )

$template

输出:

www/index.vm

然而,当字符串字面值封装在单引号中时,它将不被解析:

#set( $foo = "bar" )

$foo

#set( $blargh = '$foo' )

$blargh

渲染为:

bar

$foo

默认,这种在Velocity中使用单引号渲染未解析的文本是有效的。该默认能通过velocity.properties编辑,例如stringliterals.interpolate=false。

#[[不解析我!]]#语法允许模板设计者易于在VTL代码中使用大块的不解释和不解析内容。

#[[
#foreach ($woogie in $boogie)
  nothing will happen to $woogie
#end
]]#

渲染为:

#foreach ($woogie in $boogie)
  nothing will happen to $woogie
#end

最新网友评论  共有(0)条评论 发布评论 返回顶部

Copyright © 2007-2017 PHPERZ.COM All Rights Reserved   冀ICP备14009818号  版权声明  广告服务