Velocity入门总结

  Velocity是一个基于java的模板引擎(template engine)。它允许任何人仅仅简单的使用模板语言(template language)来引用由java代码定义的对象 ,开发的目标是分离 MVC 模式中的持久化层和业务层。 当Velocity应用于web开发时,界面设计人员可以和java程序开发人员同步开发一个遵循MVC架构的web站点,也就是说,页面设计人员可以只关注页面的显示效果,而由java程序开发人员关注业务逻辑编码。Velocity将java代码从web页面中分离出来,这样为web站点的长期维护提供了便利,同时也为我们在JSP和PHP之外又提供了一种可选的方案。

  Velocity脚本语法摘要(velocity中大小写敏感

 在 Velocity 中所有的关键字都是以 # 开头的,而所有的变量则是以$开头

1. 变量${name} ,也可以写成:$name。提倡用前面的写法。

 

变量的赋值 : $name="hello"

 赋值的左边必须是一个变量或者是属性引用

右边可以是六种类型之一: 变量引用,字面字符串,属性引用,方法引用,字面数字,数组列表

 

下面的例子演示了上述的每种类型:

#set( $monkey = $bill## 变量引用

#set( $monkey.Friend = "monica" ) ## 字面字符串

#set( $monkey.Blame = $whitehouse.Leak ) ## 属性引用

#set( $monkey.Plan = $spindoctor.weave($web) ) ## 方法引用

#set( $monkey.Number = 123 ) ## 字面数字

#set( $monkey.Say = ["Not", $my, "fault"] ) ## 数组列表

 

注意:①如果上述例子中的右值是null, 则左值不会被赋值,也就是说会保留以前的值

   ②velocity模板中未被定义的变量将被认为是一个字符串

   ③velocity模板中不会将reference解释为对象的实例变量

例如:

  $foo.name将被解释为Foo对象的getName()方法,而不是Foo对象的name实例变量。

$foo.getBar() 等同于$foo.bar ;

data.getRequest().getServerName() 等同于  $data.request.serverName  等同于${data.request.serverName}

2. 循环

    #set( $list = ["pine", "oak", "maple"])

#foreach ($element in $list)

  This is $element.

       $velocityCount (据说可以得到循环次数,但是每次试验都没成功过)

#end

输出的结果为:

1 This is pine.

2 This is oak.

3 This is maple.

每次循环$list中的一个值都会赋给$element变量。

$list可以是一个Vector、Hashtable或者Array。分配给$element的值是一个java对象,并且可以通过变量被引用。

如果$list 是一个HashMap,则可以

#foreach ( $key in $list.keySet())

  Key: $key 

  Value: $list.get($key) <br>
#end

参考资料:

  使用 Velocity 模板引擎快速生成代码

  Velocity开发教程

   Velocity语法

原文地址:https://www.cnblogs.com/liuniansishui/p/8074637.html