Velocity是什么?
Velocity 是一个基于 java 的模板引擎( template engine )。它允许简单的使用模板语言( template language )来引用由 java 代码定义的对象。
Velocity的eclipse插件
http://code.google.com/p/veloeclipse/
变量赋值
#set指令用来创建和更新变量值
#set( $foo = “text” ) String value
#set( $foo = 100 ) Numeric value
#set( $foo = [ 1, 2, 3 ] ) Array
#set( $foo = { 1 : 2, 3 : 4 } ) Map
#set( $foo = $bar ) Object Reference
#set( $foo = $bar.foo ) Bean Property
#set( $foo = $bar.doFoo() ) Method Result
循环
#foreach($foo in $foos) ... #end
默认从1开始
$velocityCount 引用循环计数
在velocity.properties中配置以下变量:
directive.foreach.counter.name = velocityCount #计数变量名称
directive.foreach.counter.initial.value = 1 #从几开始计数
条件
#if() ... #elseif() ... #else ... #end
导入外部文件
#include() -- 被包含的文件不会被引擎render
#parse() -- 被包含的文件会被引擎render
注释
单行 ##
多行 #* *#
文档格式 #** *#
宏
定义:#macro (name $arg1 $arg2) … #end
使用:#name($arg1 $arg2)
在velocity.properties中配置以下变量:
velocimacro.library指定逗号分隔的模板库
将一段代码赋给velocity变量
定义:#define($name) … #end
使用:$name
变量渲染
${formalReference}避免歧义,加入边界,如:${haha}abcd
$!ref or $!{ref} 为空不输出
velocity.properties属性配置文件
#break跳出循环
#continue??无此语句
不支持数组访问,可以使用工具类支持这个功能
转义符/
#stop停止执行模板引擎并返回
#evaluate动态评估表达式值
#set($source1 = "abc")
#set($select = "1")
#set($dynamicsource = "$source$select")
## $dynamicsource is now the string '$source1'
#evaluate($dynamicsource)值为"abc"
string连接:
$a$b
#set($str=$a+'-'+$b)
特殊性
1.赋值
#set ( $result = $query.criteria(“address”) )
#set ( $result = $query.criteria(“name”) )
如果$query.criteria(“address”) )返回"北京",$query.criteria(“name”)返回为null,则对$result还是原来的值"北京"
2.比较
#set($foo="10") $foo==10返回false
#set($foo=10) $foo==10返回true
说明:要求==两边值类型相同