velocity

(1)基本语法

            1.#

                    对于Velocity中的关键字,都是使用#开头的(想象手机上的#键,就是为了开启某功能)

                    如#set、#if、#else、#end、#foreach等

                    实例:

#if($info.imgs)
<img src="$info.imgs" border=0>
#else
<img src="noPhoto.jpg">
#end

            2.$

                    对于变量,都是使用$开头的

                    如:$name、$msg

            3.{}

                    对于需要明确表示的Velocity变量,可以使用{}将变量包含起来

                    如在页面中,需要有$someoneName这种内容,此时为了让Velocity能够区分,可以使用${someone}Name

            4.!

                    如果某个Velocity变量不存在,那么页面中就会显示$xxx的形式,为了避免这种形式,可以在变量名称前加上!

                    如页面中含有$msg,如果msg有值,将显示msg的值;如果不存在就会显示$msg。这是我们不希望看到的,为了把不存在的变量显示为空白,可以使用$!msg


(2)变量

            1.变量定义

                   #set($name = "hello")

                   例子:

#set($root = "www")
#set($name = "index")
#set($template = "$root/$name")
$template
                  结果为www/index

           2.变量赋值

                   $name = "hello"

                   赋值的左边必须是一个变量,或者是属性的引用。右边可以是:变量引用、字面字符串、属性引用、方法引用、字面数字、数组

#set($name = $bill)   ##变量引用
#set($name.pre = "monica")  ##字符串
#set($name.last = $address.num) ##属性引用
#set($name.mid = $hotel.find($web)) ##方法引用
#set($name.num = 123) ##数字
#set($name.say = ["yes",$my,"yes"]) ##数组
                  注意:velocity会将属性解释为属性的get方法,如:

                  $foo.Bar   等同于 $foo.getBar()

                  $foo.User("join")  等同于 $foo.getUser("join")

                  $foo.Request.ServerName 等同于 $foo.getRequest().getServerName()


(2)循环

         1.格式与实例

                    格式为:

                    #foreach( 单个元素名称 in 集合)
                             ....
                    #end

                    举例

#set($list = ["yes","no","not sure"])
#foreach( $elem in $list)
    $velocityCount  this is $elem.</br>
#end
                   结果为:

1 this is yes.
2 this is no.
3 this is not sure.
                      注意:$velocityCount是Velocity中定义的方法,用来获得循环次数,直接调用即可

        2.根据次数来循环

                    直接在原来集合位置定义数字范围即可

                    例1-正序:

#foreach( $num in [1..5])
    this is $num.</br>
#end
                  结果为:

this is 1.
this is 2.
this is 3.
this is 4.
this is 5.

                    例2-逆序:

#foreach( $num in [3..-2])
    this is $num.</br>
#end
                   结果为:

this is 3.
this is 2.
this is 1.
this is 0.
this is -1.
this is -2

         3.遍历map

                    使用entrySet,转化为遍历set即可

#foreach($entry in $myMap.entrySet())
   $entry.key : $entry.value  <br>
#end
                    结果为:

1 : abc 
2 : bbc 
3 : cbc 
4 : dbc 
5 : ebc 


(3)条件语句

         1.格式

#if(condition)
#elseif(condition)
#else
#end

          注意:判空为#if($foo)

          2.实例

#if($age>=18)
    $age
#else
	your age is below 18!
#end

(4)关系和逻辑操作符

         1.&&

#if($foo && $bar)
    this is and
#end
             只有当$foo和$bar全都不为空的时候才会执行

         2.||

#if($foo || $bar)
    this is or<br>
#else
    is null
#end
           只要有一个不为空,就会执行

         3.!

          和java相同,取反


(5)宏

         1.定义

                   #macro(宏的名称  $参数1  $参数2 .....)
                          语句体(即函数体)
                   #end

         2.调用

                  #宏的名称 ($参数1  $参数2 .....)

                   说明:参数之间用空格隔开

         3.实例

#macro (tablerows $color $list)
#foreach($i in $list)
<tr><td bgcolor="$color">$i<td/><tr/>
#end
#end
         调用:

#set($contents = ["zero","one","two","three"])
#set($color = "red")
<table>
	#tablerows($color,$contents)
<table/>

(6)调用实例方法

         1.定义

               如果context中存储的是类实例,那么就可以调用类方法

         2.实例

              方法 定义:

public class Book {  
      
        ..
    public String show() {
		return "show";
	}
}  
            赋值:

context.put("book", new Book());
               vm中:

$book.show()


(7)转义字符'\'

         如果reference,2个'\'意味着输出一个'\'

#set($mail = "foo")
$mail
\$mail
\\$mail
\\\$mail
         结果为:

foo $mail \foo \$mail

(8)内置对象

         Velocity内置了一些对象,在vm中可以直接调用,如:$request,$response,$session


(9)注释

         1.单行注释##

##this a single line comment
         2.多行注释#*  *#

#*
    this is a muti-line comment
    see this example
*#



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值