Velocity是一個基於java的模板引擎。它允許任何人僅僅簡單的使用模板語言來引用由java代碼定義的對象。
當Velocity應用於web開發時,界面設計人員可以和java程序開發人員同步開發一個遵循MVC架構的web站點,也就是說,頁面設計人員可以只 關注頁面的顯示效果,而由java程序開發人員關注業務邏輯編碼。Velocity將java代碼從web頁面中分離出來,這樣為web站點的長期維護提 供了便利,同時也為我們在JSP和PHP之外又提供了一種可選的方案。
Velocity基本語法和使用:
1. "#"用來標識Velocity的腳本語句。
如:#set、#if 、#else、#foreach、#end、#include、#parse、#macro等。
2. "$"用來標識一個對象(或理解為PHP的變量)
如:$i、$user等。
3. "{}"用來明確標識Velocity變量,和普通模版字符串區分開來;
如:${user}‘s age 可以顯示為 riqi's age。
4. "!"強制把不存在的變量顯示為空白。
如:$!msg,假如msg對象為空,則模版中不顯示該變量;如果缺少"!",則顯示$msg字符串,這是我們不想要的結果。
5. 變量的定義和賦值。不需要指定變量的類型,類似弱類型語言PHP可以隨意指定,在賦值后自動判定變量的類型,如:
#set($username="riqi") ##設置用戶名
#set($age=26) ##設置年齡
6. 數組循環:
#foreach ($user in $users) $!{user} $!{velocityCount} <br /> #end
$users可以是Vector、Hashtable或者Array,Velocity提供了得到循環次數的值:$velocityCount。
7. 語句注釋:
單行注釋:## 單行注釋代碼
多行注釋:#* 多行注釋代碼 *#
8. 模版支持關系和邏輯操作符運算,如:&&、||、! 等
9. 宏定義:#macro ,類似PHP聲明一個函數,其中有函數名稱和參數列表。先定義再調用。
10. 終止命令:#stop,類似PHP的exit(); 停止執行模板引擎並返回。
11. 引入公共模版文件:#include與#parse,它們的差異是:
(1) 與#include不同的是,#parse只能指定單個對象。而#include可以有多個
如果您需要引入多個文件,可以用逗號分隔就行:
#include ("one.gif", "two.txt", "three.htm" )
在括號內可以是文件名,但是更多的時候是使用變量的:
#include ( “greetings.txt”, $seasonalstock )
(2) #include被引入文件的內容將不會通過模板引擎解析;
而#parse引入的文件內容Velocity將解析其中的velocity語法並移交給模板,意思就是說相當與把引入的文件copy到文件中。
#parse是可以遞歸調用的。
12. 轉義字符'\'.
這個和其它語言沒有差異,假如:$user="riqi"; 那么,\$user 表示輸出 $user字符串,\\$user表示輸出\riqi。
13. Velocity內置了一部分java對象 如:$request、$response、$session等,在vm模版里可以直接調用。
------------------------------------------------------------------------------------
細節整理:
1. Velocity判斷某個變量是否為空的方式:
#if($!變量名)……#else……#end
或者:
#if("" == $!varName)……#else……#end