Velocity用户指南(二)

指令(Directives)

 

引用允许模板设计者为Web站点生成动态内容,而指令使巧妙处理Java代码的脚本元素容易使用。

 

1#set

 

格式:#set( LHS = RHS )

 

l         LHS可以是变量引用或属性引用

 

l         RHS可以是引用、字符串、数字、ArrayListMap

 

下面的例子展示了上面的每种RHS类型:

 

#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

 

对于ArrayListMap,可以使用对应的Java方法访问其中的元素值:

 

$monkey.Say.get(0)

 

$monkey.Map.get("bannana")

 

$monkey.Map.banana ## same as above

 

l         RHS可以是简单的算术表达式

 

#set( $value = $foo + 1 ) ## Addition

 

#set( $value = $bar - 1 ) ## Subtraction

 

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

 

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

 

#set( $value = $foo % $bar ) ## Remainder

 

算术表达式只支持整型。/的结果为整数;如果非整型数值,返回null

 

l         如果RHS的结果为null,是不会赋值给LHS

 

看下面的例子:

 

#set( $criteria = ["name", "address"] )

 

#foreach( $criterion in $criteria )

 

    #set( $result = $query.criteria($criterion) )

 

    #if( $result )

 

        Query was successful

 

    #end

 

#end

 

上面使用$result检查是否执行成功是有问题的。如果第一次执行成功,$result不为null,则后面的执行不管是否成功,检查条件总是成立。改进的方法是在每次执行前初始化为false

 

#set( $criteria = ["name", "address"] )

 

#foreach( $criterion in $criteria )

 

#set( $result = false )

 

    #set( $result = $query.criteria($criterion) )

 

    #if( $result )

 

        Query was successful

 

    #end

 

#end

 

l         String文字可以使用双引号或单引号括起。两者的主要区别是双引号中的引用会替换成相应的值,而单引号中的引用原样输出

 

#set( $directoryRoot = "www" )

 

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

 

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

 

$template

 

输出结果是:www/index.vm

 

如果使用单引号:

 

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

 

输出结果是:$directoryRoot/$templateName

 

l         使用双引号可以实现字符串的串联,如下面的例子:

 

      #set( $size = "Big" )

 

      #set( $name = "Ben" )

 

      #set($clock = "${size}Tall$name" )

 

      The clock is $clock.

 

2#if / #elseif / #else

 

#if指令在条件成立时,显示#if#end之间的内容,否则显示#else#end之间的内容。下面是一个例子:

 

#if( $foo )

 

   Velocity!

 

#end

 

条件成立有两种情况:

 

l         如果$fooboolean,则$foo要为true

 

l         否则,$foo不为null

 

#if指令中可以使用的关系和逻辑符号包括:

 

l         <<===>=>

 

l         &&(and)||(or)!(not)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值