1.变量定义
因为是一种弱类型语言,所以不用定义变量的类型,编译器根据赋值的类型自动进行判断,定义的关键字为set,set前要 加#,变量名前必须加$,变量名和值的组合要放在小括号中,不必用分号结束语句。例如:
#set($maxValue=5)
#set($name="Bob")
也 可以定义数组,形式如下:
#set($arrayName=["element1","element2",...])
例 如:#set($members=["mary","rose","Mr Black"])
2.注释
对单行注 释,形式如下:
#set($name="mike") ##这是一个注释:定义名字为mike
对多行注释,形式如下:
#set($name="mike")
#*
这 是一个多行注释:定义名字为mike,
如果定义为其他的,不符合用户习惯!
*#
3.流程控制
支 持的流程控制有:#if...#else...#end(逻辑判断语句)和#foreach(... in ...)...#end(循环语句),可以嵌套使用。例如:if的例子
#set($name="mary")
#set($sex="female")
#set($age=20)
#set($coutry="America")
#if($name=="mary")
hello mary!
#end
#if($sex=="male")
You are a boy!
#else
You are a girl!
#end
#if($age<12)
You are too young!
#elseif($age>12 && $age<18)
You are not an adult!
#else
You are an adult!
#end
#if($country!="China")
#if($country=="Amemica")
You are from America!
#end
#else
#if($city=="Beijing")
You are from Beijing!
#else
You are not from Beijing!
#end
#end
例如:foreach的例子
#set($members=["mary","rose","mike"])
#foreach($member in $members)
$member
#end
另 外,foreach循环不仅可以显示数组内容,也可以显示java的Vector、List、Iterator等对象的内容,
4.#foreach() #end用于循环输出 及退出
#foreach( $key in $allProducts.keySet() )
<li>Key: $key -> Value: $allProducts.get($key)</li>
#if($votecityCount>5)#break#end
#end
5. #include,用于包括一些资源文件,当然include是不会去解析资源文件
#include( "one.txt" )
#parse,用于解析并且包括相应的资源文件
#parse( "me.vm" ),和主文件共享相应的Context
#stop,用于停止执行解析,并返回,主要用于调试功能。
6.velocity的#macro功能挺强大.
#macro,类似于宏定义,用于自定义相应的标记。
如下定义了一段宏,用于输出表格中的列表
#macro( tablerows $color $somelist )
#foreach( $something in $somelist )
<tr><td bgcolor=$color>$something</td></tr>
#end
#end
在模版中,只需要使用#tablerows($color $somelist)就可以取代里面的代码了:
#set( $greatlakes = ["Superior","Michigan","Huron","Erie","Ontario"] )
#set( $color = "blue" )
<table>
#tablerows( $color $greatlakes )
</table>
#macro 支持内嵌语法,所以对于模版的定义,就变得更加的灵活而简单了。