Velocity 基本模板語言語法使用

在 hellovelocity.vm 里面可以看到很多以 # 和$符開頭的內(nèi)容,這些都是 Velocity 的語法。在 Velocity 中所有的關鍵字都是以 # 開頭的,而所有的變量則是以$開頭。Velocity 的語法類似于 JSP 中的 JSTL,甚至可以定義類似于函數(shù)的宏,下面來看看具體的語法規(guī)則。

一、變量

和我們所熟知的其他編程語言一樣,Velocity 也可以在模板文件中有變量的概念。

1. 變量定義

#set($name =“velocity”)

等號后面的字符串 Velocity 引擎將重新解析,例如出現(xiàn)以$開始的字符串時,將做變量的替換。

#set($hello =“hello $name”)

上面的這個等式將會給$hello 賦值為“hello velocity”

2. 變量的使用

在模板文件中使用$name 或者${name} 來使用定義的變量。推薦使用${name} 這種格式,因為在模板中同時可能定義了類似$name 和$names 的兩個變量,如果不選用大括號的話,引擎就沒有辦法正確識別$names 這個變量。
對于一個復雜對象類型的變量,例如$person,可以使用${person.name} 來訪問 person 的 name 屬性。值得注意的是,這里的${person.name} 并不是直接訪問 person 的 name 屬性,而是訪問 person 的 getName() 方法,所以${person.name} 和${person.getName()} 是一樣的。

3. 變量賦值

在第一小點中,定義了一個變量,同時給這個變量賦了值。對于 Velocity 來說,變量是弱數(shù)據(jù)類型的,可以在賦了一個 String 給變量之后再賦一個數(shù)字或者數(shù)組給它。可以將以下六種數(shù)據(jù)類型賦給一個 Velocity 變量:變量引用, 字面字符串, 屬性引用, 方法引用, 字面數(shù)字, 數(shù)組列表。

#set($foo = $bar)
#set($foo =“hello”)
#set($foo.name = $bar.name)
#set($foo.name = $bar.getName($arg))
#set($foo = 123)
#set($foo = [“foo”,$bar])

二、循環(huán)

在 Velocity 中循環(huán)語句的語法結構如下:

#foreach($element in $list)
 This is $element
 $velocityCount
#end

Velocity 引擎會將 list 中的值循環(huán)賦給 element 變量,同時會創(chuàng)建一個$velocityCount 的變量作為計數(shù),從 1 開始,每次循環(huán)都會加 1.

三、條件語句

條件語句的語法如下

#if(condition)
...
#elseif(condition)
…
#else
…
#end

四、關系操作符

Velocity 引擎提供了 AND、OR 和 NOT 操作符,分別對應&&、||和! 例如:

#if($foo && $bar)
#end

五、宏

Velocity 中的宏可以理解為函數(shù)定義。定義的語法如下:

#macro(macroName arg1 arg2 …)
...
#end

調(diào)用這個宏的語法是:

#macroName(arg1 arg2 …)

這里的參數(shù)之間使用空格隔開,下面是定義和使用 Velocity 宏的例子:

#macro(sayHello $name)
hello $name
#end

#sayHello(“velocity”)

輸出的結果為 hello velocity

六、#parse 和 #include

`#parse 和 #include 指令的功能都是在外部引用文件,而兩者的區(qū)別是,#parse 會將引用的內(nèi)容當成類似于源碼文件,會將內(nèi)容在引入的地方進行解析,#include 是將引入文件當成資源文件,會將引入內(nèi)容原封不動地以文本輸出。分別看以下例子:
foo.vm 文件:

#set($name =“velocity”)
parse.vm:
#parse(“foo.vm”)

輸出結果為:velocity

include.vm:
#include(“foo.vm”)

輸出結果為:#set($name =“velocity”)

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內(nèi)容