1.$
是占位符号,在模板合并时,会被替换成文本值
(
注意只能是字符串
)
当定义占位符时,
$
后只能是英文字母,如
$name
,如果是数字,如
$100,
那么打印出
100
美金
2.#set()
可以为变量赋值,可以是字符串、数字、布尔值等,例如
#set($name=“hzx”)
或
#set($age=29) #set($isMale=true)
可以组合起来使用,例如
your name is $name //your name is hzx
wrong:next year your age is ($age + 1) //
这是错误的,打印结果是
next year your age is (29+1),
因为是文本占位符
#set($nextAge = $age+1) //
此时需要定义一个新的变量,
set($age++)
呢?或者
set($age = $age +1)
呢?
right:next year your age is $nextAge
3
、
#set()
定义
ArrayList
#set($students=[“hzx”,”caoli”,”caorui”]) //
此时定义了一个字符串数组,
JSON
串传递过来后,可以变成复杂对象来处理。
$students.get(1)
可获取第
2
个元素
4
、静态引用符
,
前面加一个
!
,以避免出现不存在的或者空的引用,如果一个变量没有值是,什么也不输出。
如果
:
hi, $newName welcome join! //
因为该变量没有被定义,打印结果为
hi, $newName,welcome join!
hi,$!newName welcome join! //
采用静态引用符,打印结果为
hi, welcome join!
5
、条件判断:
#if #then #else,
其中
#end if
是必须要加上的
例:
#if $customer.GoldMember
欢迎您,金牌会员
#else if $customer.YinMember
欢迎您,银牌会员
#else
欢迎您,铜牌会员
#end if
6
、循环
#foreach
,后面加上
#end
结束
#set($students=[“hzx”,”caoli”,”caorui”])
<table>
<tr><td>name</td></tr>
#foreach $everyOne in $students
<tr><td>$everyOne</td></tr>
#end
</table>
7
、定义
VM
宏,所谓宏与函数的区别是宏在编译的时会替换,而函数不会,
如上面的打印学生列表,宏默认保存在
VM_global_library.vm
中,被称为
Velocimacros
例
1
:没有参数的宏
#macro(showStus)
定以了宏名称为
showStus,
当需要宏时候,只需要
#showStus()
#if($students)
如果存在学生列表
#foreach ($everyOne in $students)
遍历
$everyOne ##
打印每个学生的姓名
#end
#end
例
2
:带参数的宏,接受传入的学生列表进行遍历
#macro(showStus $nameList)
此时调用该宏需要传入
1
个参数,
#showStus($students)
#if($nameList)
#foreach($everyOne in $nameList)
$everyOne
#end
#end
8
、
VM
中的注释,
##
用于单行煮熟,
#*
中间是注释
*#,
这样的可以多行注释。
9
、
Velocity
上下文,可以理解为引入
JAVA
对象,这种导入必须在
java
代码中完成
代码中,创建
org.apache.velocity.context.Context
实例获得
Velocity
上下文,使用
put
方法放到对象中。
10、VM模板在Eclipse下是黑白的,此时需要在Eclipse中:个人设置-Content Types-Text-HTML-点击Add按钮,添加*.vm。
此时VM模板会向HTML一样可以被编辑