標籤:
常用方法:
$myarray.isEmpty()數組是否為空白
$myarray.size()擷取數組元素個數
$myarray.get(2)擷取數組指定下標的元素
$myarray.add()增加元素
數組 & 訪問
Velocity 訪問數組對象,無法通過類似 arr[2] 來訪問特定位置的元素。
#set($arr = [0, 1, 2, 3])
$arr.get(2)
註:Velocity 中的數組對應 Java 中的 List 對象。對於 Java 原生 Array 對象, 只能夠 #foreach 進行遍曆,無法使用 $arr[0] 和 $arr.get(0) 方法。
範圍(range)
#foreach($item in [10..20])
$item
#end
對象 & 訪問
#set($obj = {“key”:”value”, “name”:”space”})
$obj.get(“key”)
#foreach(#item in $obj)
$item
#end
上面的 $item 取到的是 values,如果需要在遍曆對象過程中,同時取到對象的 keys, 可以使用 entrySet() 或 keySet() 方法。
#foreach($item in $!obj.entrySet())
$!item.key : $!item.value
#end
#foreach($item in $obj.keySet())
$item : $obj.get($item)
#end
註: 這種集合的遍曆是無序的,即遍曆順序可能不同於 $obj 中元素的定義順序 (據目前所知,是根據鍵的字母排序的)。
另外有兩種不完美解決方案:
I:
#set($obj = [
{“key”:”key”, “value”:”value”},
{“key”:”name”, “value”:”space”}
])
#foreach($item in $obj)
$item.key : $item.value
#end
II:
#set($obj = [
[“key”,”value”],
[“name”,”space”]
])
#foreach($item in $obj)
$item.get(0) : $item.get(1)
#end
之所以說 不完美 是因為:對於已知的 key,本可以直接
$obj.get(“key”)
現在只能遍曆並進行比較取得,而且較早的 Velocity 版本無法使用 #break, 以便在找到匹配項之後立即退出迴圈。
#foreach($item in $obj)
#if(“key” == $!obj.get(0))
#set($myKey = $!type.get(1))
##break
#end
#end
更多資料內容可參看:
http://wiki.hotoo.me/Velocity-Notes.html
http://wiki.hotoo.me/Velocity.html
VELOCITY 數組操作