Velocity 模板引擎介紹
Velocity是一個基於java的模板引擎(template engine)。它允許任何人僅僅簡單的使用模板語言(template language)來引用由java代碼定義的對象。當Velocity 應用於web開發時,界面設計人員可以和java程序開發人員同步開發一個遵循MVC架構的web站點,也就是說,頁面設計人員可以只關注頁面的顯示效果,而由java程序開發人員關注業務邏輯編碼。
引入Velocity的發布包
從http://velocity.apache.org/網站上下載最新的Velocity,引入jar包。
Velocity基本語法
"#"用來標識Velocity的關鍵字,包括#set、#if 、#else、#end、#foreach、#end、#include、#parse、#macro等;
"$"用來標識Velocity的變量;如:$i
、$msg
、$TagUtil.options(...)
等。
"{}"用來明確標識Velocity變量;比如在頁面中,頁面中有一個$someonename
,此時,Velocity將把someonename作為變量名,若我們程序是想在someone這個變量的后面緊接着顯示name字符,則上面的標簽應該改成${someone}
name。
"!"用來強制把不存在的變量顯示為空白。如:當找不到username
的時候,$username
返回字符串"$username
",而$!username
返回空字符串""
Velocity語法使用
一、變量定義
#set($name ="velocity")
等號后面的字符串 Velocity 引擎將重新解析,例如出現以$開始的字符串時,將做變量的替換。
二、變量賦值
#set($hello ="hello $name")
上面的這個等式將會給$hello賦值為"velocity"
三、循環
#foreach($element in $list) <span>$!element</span><br> #end
Velocity引擎會將list中的值循環賦給element變量
四、條件語句
條件語句的語法如下:
#if(condition) ... #elseif(condition) … #else … #end
五、關系操作符
Velocity引擎提供了AND、OR和NOT操作符,分別對應&&、||和!例如:
#if($foo && $bar) ... #end
六、宏
Velocity中的宏可以理解為函數定義。定義的語法如下:
#macro(macroName arg1 arg2 ...)
...
#end
調用這個宏的語法是:
#macroName(arg1 arg2 ...)
這里的參數之間使用空格隔開,下面是定義和使用Velocity宏的例子:
#macro(sayHello $name)
hello $name
#end
#sayHello("velocity")
輸出的結果為hello velocity
七、#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")
八、注釋
單行注釋
##單行注釋
多行注釋
#*
多行注釋
*#
九、單雙引號
單引號不解析引用內容,雙引號解析引用內容
#set ($var="hello") '$var' ## 結果為:$var "$var" ## 結果為:hello
十、屬性
通過'.'操作符使用變量內容
$Identifier.Identifier
$user.name
本文參考
http://www.ibm.com/developerworks/cn/java/j-lo-velocity1/
http://outofmemory.cn/code-snippet/1623/Velocity-syntax-usage-summary