Velocity 模板引擎介绍

时间:2022-08-08 20:35:11

一、变量

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 的官方文档。