Velocity的基本语法
来自站长百科
导航: 上一页
先来看看velocity的语法:vtl也就是velocity的基本语言.用过脚本语言的,对于这个应该会很容易上手,其实,基本上,语法可以分为变量和关键词。
- 定义变量:
变量使用$作为开头符号,$a 和${a}是一致的。在模版中声明一个变量是很容易的,使用set关键字,例如:#set( $foo = "Velocity" )
对于velocity中,感觉比较灵活的就是变量中,可以直接使用方法,和javabean属性一样方便使用:
如下:$customer.Address,$purchase.Total,$customer.Address.phone。不过好像不支持map语法,如:a["key"]这种写法,但是可以使用方法代替:a.get("key")。而使用了方法,感觉就在使用java代码一样方便。当然变量中支持简单的表达式计算:$a+1等等。
有一点需要注意的是,如果变量没有解析,还是会输出$a这个变量,而不是空白或者报错。
- 关键字:
关键字使用#开头。
其关键字也不多,只有少数的几个,但是已经足够用了。如前面的声明变量:
#set #if #elseif #else #end 这是最常用的条件判断,每个判断使用#end结尾 #if($a==1)true enough#{else}no way!#end #foreach() #end用于循环输出 #foreach( $key in $allProducts.keySet() ) <li>Key: $key -> Value: $allProducts.get($key)</li> #end #include,用于包括一些资源文件,当然include是不会去解析资源文件,这和#parse不同 #include( "one.txt" ) #parse,用于解析并且包括相应的资源文件 #parse( "me.vm" ),和主文件共享相应的Context #stop,用于停止执行解析,并返回,主要用于调试功能。
基本上,使用以上的语法,可以定义出任何的模版了。当然,为了简化模版的定义,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 支持内嵌语法,所以对于模版的定义,就变得更加的灵活而简单了。