在 hellovelocity.vm 裡面可以看到很多以 # 和$符開頭的內容,這些都是 velocity 的語法,在 velocity 中所有的關鍵字都是以 # 開頭的,而所有的變數則是以$開頭。
#set($name="velocity
")
等號後面的字串 velocity 引擎將重新解析,例如出現以$開始的字串時,將做變數的替換。
以 "$" 開頭,第乙個字元必須為字母
變數可以包含的字元有以下內容:
$
或
$name
在模板檔案中使用$name 或者$ 來使用定義的變數。推薦使用$ 這種格式,因為在模板中同時可能定義了類似$name 和$names 的兩個變數,如果不選用大括號的話,
引擎就沒有辦法正確
識別$names 這個變數。
對於乙個複雜物件型別的變數,例如$person,可以使用$ 來訪問 person 的 name 屬性。值得注意的是,這裡的$ 並不是直接訪問 person 的 name 屬性,而是訪問 person 的
getname() 方法,所以$ 和$ 是一樣的,即$=$
在第一小點中,定義了乙個變數,同時給這個變數賦了值。對於 velocity 來說,變數是弱資料型別的,可以在賦了乙個 string 給變數之後再賦乙個數字或者陣列給它。可以將以下六種資料型別賦給一
個 velocity 變數:變數引用, 字面字串, 屬性引用, 方法引用, 字面數字, 陣列列表。
1、右值是null, 則左值不會被賦值,也就是說會保留以前的值。
#set( $monkey = "monica")
#set( $monkey =$monkey_a )
$monkey
結果輸出:monica,因為右邊的$monkey_a並沒有定義過
2、velocity模板中不會將reference解釋為物件的例項變數,詳情見上方
3、變數的作用域 是從上而下往後的都會有
a$monkeyclass="
list
">
class="
item
">
class="
inner-title」>
#set( $monkey = 「jerry"
)class="
color_bg point
">
保障額度高b$monkey
class="
inner-list
">
年度基礎免賠額:class="
color bold
">1萬元
c$monkey
class="
item
">d$monkey
class="
inner-title
">
class="
color_bg point
">
住院醫療金
class="
inner-list
">
重症監護費用:不設單項最高年限額
e$monkey
// 以上abcde的輸出結果是
// 輸出結果: 除了a是字串顯示$monkey , 其餘的都是:jerry
#foreach($element in$list)
this
is$element
$velocitycount
#end
velocity 引擎會將 list 中的值迴圈賦給 element 變數,同時會建立乙個$velocitycount 的變數作為計數,從 1 開始,每次迴圈都會加 1.
#foreach迴圈得到的是值,和es6中的for...of相似
# default name of the loop counter
# variable reference.
directive.foreach.counter.name = velocitycount
# default starting value of the loop
# counter variable reference.
directive.foreach.counter.initial.value = 1
$foreach.index //自帶方法 : 計數從0開始 相當於index
$foreach.hasnext //自帶方法 : 等於false代表是最後乙個
$foreach.count //自帶方法 : 計數 從1開始 相對於
$velocitycount
$foreach.first //自帶方法 : 是否是第乙個
$foreach.last //自帶方法 : 是否是最後乙個
使用 #break指令在任何時候停止迴圈
#if( $foreach.count > 3 )#break
#end
形式一:#if #elseif #else #end
#if(condition)...#elseif(condition)
…#else
…#end
形式二:#if #else #end
#if(condition)...#else
…#end
形式二:#if #end
#if(condition)…#end
velocity 引擎提供了 and、or 和 not 操作符,分別對應&&、||和!
#if($foo && $bar)#end#if($foo || $bar)#end
#if(!$bar)#end
velocity 中的巨集可以理解為函式定義。
#macro(macroname arg1 arg2 …)...#end
macroname:巨集的名字
arg1 / arg2:巨集的引數
#macroname(arg1 arg2 …)
這裡的引數之間使用空格隔開
#macro(sayhello $name)hello $name
#end
#sayhello(「velocity」)
//輸出的結果為 hello velocity
⚠️不推薦在介面模板中大量使用,經過測試,巨集不支援方法過載
#parse 和 #include 指令的功能都是在外部引用檔案,而兩者的區別是,#parse會將引用的內容當成類似於原始碼檔案,會將內容在引入的地方進行解析,#include是將引入檔案當成資源檔案,會將引
入內容原封不動地以文字輸出。分別看以下例子:
//foo.vm 檔案:
#set($name =「velocity」)
#parse(「foo.vm」)
//輸出結果為:velocity
#include(「foo.vm」)
//輸出結果為:#set($name =「velocity」)
⚠️包含檔案#inclue("模板檔名")或#parse("模板檔名"),
主要用於處理具有相同內容的頁面,比如每個**的頂部或尾部內容。
單行注釋:##
多行注釋:#* *#
文件格式注釋:#** *#
#set ($var="helo")
test"$var" 返回testhello:雙引號解析變數
test'$var' 返回test'$var':單引號不解析變數
可以通過設定 stringliterals.interpolate=false改變預設處理方式
.get()
.getstring()
.getjsonarray()
.getjsonobject()
.getbooleanvalue()
$myarray.isempty()陣列是否為空
$myarray.size()獲取陣列元素個數
$myarray.get(2)獲取陣列指定下標的元素
$myarray.add()增加元素
官網使用 velocity 模板引擎快速生成**
《apache velocity使用者指南》官方文件
Velocity模板語法說明
用來標識velocity的關鍵字,包括 set if else end foreach end include parse macro等 用來標識velocity的變數 如 i msg tagutil.options 等。用來明確標識velocity變數 比如在頁面中,頁面中有乙個 someonen...
veloCity中常用語法小總結
最近專案中用到了velocity與struts2結合,總結一下valocity實用的標籤 1 變數宣告 set lihan lihan 2 輸出變數 lihan 有這個變數則輸出,沒有則輸出 lihan lihan 有這個變數則輸出,無則不輸出 3 集合遍歷 foreach lihan in lis...
XPath 學習二 語法
xpath 使用路徑表示式來選取 xml 文件中的節點或節點集。節點是通過沿著路徑 path 或者步 steps 來選取的。表示式描述 nodename 選取此節點的所有子節點。從根節點擊取。從匹配選擇的當前節點擊擇文件中的節點,而不考慮它們的位置。選取當前節點。選取當前節點的父節點。選取屬性。在下...