变量的定义
#set($name = "hello")
变量引用尽量规范
Java is Hello ${name}
变量赋值
#set($P{monkey.Friend="monica"}) //这是赋值一个string
注意:
1.如果右边值是null,则左边不会被赋值,会保留以前的值
2.velocity模板不会将reference解释为对象的实例变量
例如: $foo.Name 将被解释为Foo对象的getName()方法,而不是Foo对象的Name实例变量
循环
#foreach ($element in $list)
This is $element
$velocityCount //这个表示的数量
#end
条件语句
#if(condition)
#else if(condition)
#else
#end
语句的嵌套
#foreach($element in $list)
## 内部循环
#foreach ($element in $list)
$element
#end
## 外部循环
$element
#end
注释
(1) 单行注释
## 表示单行注释
(2) 多行注释
#* 这是多行注释*#
(3) 文档格式注释
#** 这是文档注释
@version 1.1
@author minglangx
*#
关系和逻辑操作符
#if($foo && $bar)
This AND that
#end
Velocity中的宏
Velocity中的宏我们可以理解为函数
(1) 宏的定义
#marcro(宏的名称 $参数1 $参数2....)
语句体
#end
(2) 宏的调用
#宏的名称($参数1 $参数2...)
说明: 参数之间用空格隔开
#stop
停止执行模板引擎并返回,把它应用于debug调试
#include与#parse
都是引入本地文件,为了安全,被引入的本地文件只能在TEMPLATE_ROOT目录下。
区别:
(1) #include可以引入多个文件,可以用逗号分隔。
#include("one.gif","two.txt","three.htm")
在括号内可以是文件名,但是更多的是使用变量
#include($test)
(2) include被引入的文件的内容将不会通过模板引擎解析
而#parse引入的文件内容Velocity将解析其中的velocity语法并移交给模板意思就是直接将引入文件的内容复制到当前文件中
例如: 当前文件 dofoo.vm
Count down.
#set ($count=8)
## 这里引用了一个vm文件直接追加到当前代码中
#parse("parsefoo.vm")
ALL done with dofoo.vm!
那么在parsefoo.vm模板中,你输入一下内容
$count
#set ($count = $count -1 )
#if ($count > 0)
#parse("parsefoo.vm")
#else
ALL done with parsefoo.vm!
#end
最后显示结果:
Count down.
8
7
6
5
4
3
2
1
0
All done with parsefoo.vm!
All done with dofoo.vm!
10. 转义字符 ''的使用
如果引用被定义, 两个'\‘只会输出一个'',如果未被定义,刚按原样输出. 例如:
#set($email = "foo" )
$email
\$email
\\$email
\\\$email
输出:
foo
\$email
\foo
\$email
如果$email 未定义
$email
\$email
\\$email
\\\$email
内置对象
Velocity内置了一些对象,在vm模板里可以直接调用,例如:$request、$response、$session
数组访问
如果需要访问特定的元素需要传入相应的下标