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一样可以被编辑