Velocity 模板引擎介绍
一、变量
1. 变量定义
#set($name =“velocity”)
2. 变量的使用
在模板文件中使用$name 或者${name} 来使用定义的变量。推荐使用${name} 这种格式,因为在模板中同时可能定义了类似$name 和$names 的两个变量,如果不选用大括号的话,引擎就没有办法正确识别$names 这个变量。
对于一个复杂对象类型的变量,例如$person,可以使用${person.name} 来访问 person 的 name 属性。值得注意的是,这里的${person.name} 并不是直接访问 person 的 name 属性,而是访问 person 的 getName() 方法,所以${person.name} 和${person.getName()} 是一样的。
3. 变量赋值
在第一小点中,定义了一个变量,同时给这个变量赋了值。对于 Velocity 来说,变量是弱数据类型的,可以在赋了一个 String 给变量之后再赋一个数字或者数组给它。可以将以下六种数据类型赋给一个 Velocity 变量:变量引用, 字面字符串, 属性引用, 方法引用, 字面数字, 数组列表。
#set($foo = $bar) #set($foo =“hello”) #set($foo.name = $bar.name) #set($foo.name = $bar.getName($arg)) #set($foo = 123) #set($foo = [“foo”,$bar])
二、循环
#foreach($element in $list) This is $element $velocityCount #end
对象的循环
#foreach($Meisai in $KbnMeisaiList) #if($!{Meisai.kbnId}==$!{kbn.kbnId}) <input type="checkbox" name="$!{Meisai.kbnId}" id="$!{Meisai.kbnCd}" value="$!{Meisai.kbnCdName}" #if(!${null.isNull($kbnSelectList)} && ${kbnSelectList.size()}!=0) #foreach($temp in $kbnSelectList) #if($!{temp.kbnid} == $!{kbn.kbnId} && $!{temp.kbncd} == $!{Meisai.kbnCd}) checked="checked" #end #end #end />$!{Meisai.kbnCdName} #end #end
三、条件语句
条件语句的语法如下
#if(condition) ... #elseif(condition) … #else … #end
四、关系操作符
Velocity 引擎提供了 AND、OR 和 NOT 操作符,分别对应&&、||和! 例如:
#if($foo && $bar) #end
五、宏
Velocity 中的宏可以理解为函数定义。定义的语法如下:
#macro(macroName arg1 arg2 …)
...
#end
六、#parse 和 #include
#parse 和 #include 指令的功能都是在外部引用文件,而两者的区别是,#parse 会将引用的内容当成类似于源码文件,会将内容在引入的地方进行解析,#include 是将引入文件当成资源文件,会将引入内容原封不动地以文本输出。分别看以下例子:
foo.vm 文件:
#set($name =“velocity”)
parse.vm:
#parse(“foo.vm”)
输出结果为:velocity
include.vm:
#include(“foo.vm”)
输出结果为:#set($name =“velocity”)
以上内容包含了部分 Velocity 的语法,详细的语法内容可以参考 Velocity 的官方文档。