如何在VTL中創建數組並向數組添加內容?另外如何通過索引檢索數組的內容?在速度模板語言中創建並遍歷數組
25
A
回答
0
我沒有在VTL中創建數組,但將數組傳遞給VTL上下文並使用它們。在VTL,您不能檢索通過索引數組的內容,你只使用的foreach,因爲例如該代碼是從我的動態SQL生成VTL腳本複製:
#foreach($col in $Columns) SUM($col.DBColumn) AS ''$col.Name''#if($velocityCount!=$Columns.Count), #end #end
出於這個原因,我們也不能有二維數組。當我需要一個數組在一行中存儲2個對象時,我使用了定義一個新類的解決方法,並將該類的對象放入單維數組中。
40
根據Apache Velocity User Guide,分配的右手邊的類型可以是的
- 可變參考
- 列表項
- 字符串文字
- 屬性參考
- 方法參考
- 數量字面
- Arr ayList
- 地圖
您可以創建一個空的列表,這將滿足陣列中的所有您的需求,在Apache Velocity模板中包含的表達式:
#set($foo = [])
或初始化值:
#set($foo = [42, "a string", 21, $myVar])
然後,添加使用Java元素添加方法:
$foo.add(53);
$foo.add("another string");
但要注意,因爲列表類型的Java.add()方法返回一個布爾值,所以當您將一個元素添加到列表中時,Velocity將打印出例如「true」或「false」 「添加」功能的結果。
一個簡單的解決辦法是賦予add函數的變量的結果:上述
<span>$foo[1]</span>
表達會顯示:
#set($bar = $foo.add(42))
可以使用索引號訪問列表的元素帶有文本「一個字符串」的跨度。然而,訪問列表元素的最安全的方法是使用foreach循環。
3
創建磁盤陣列易於:
#set($array = [])
把一個元素的數組也很容易:
$array.add(23)
獲取元素從一個數組從您的速度取決於版本。 速度1。6,你必須使用
$array.get($index)
由於速度1.7,你可以使用經典形式:
$array[$index]
相關問題
- 1. 創建並循環遍歷數組bools
- 2. MIPS彙編語言遍歷數組
- 3. 速度模板語言動態變量
- 4. 序言:遍歷一個列表,並創建一個謂語
- 5. 在速度模板中創建對象
- 6. 遍歷數組並替換模板中的數據
- 7. 遍歷數組並在PHP中創建項目集合?
- 8. 如何在速度模板語言中調用ajax調用?
- 9. 如何遍歷列表並從中創建一個json數組?
- 10. 如何創建模板語言
- 11. 遍歷數組創建rails對象
- 12. HTML遍歷速度很慢
- 13. 遍歷在HTML模板
- 14. 無法在AngularJS模板中遍歷數組
- 15. Ruby - 遍歷數組並創建一個三列x行表
- 16. 遍歷二維數組,在語法
- 17. 如何遍歷Rails模板上的數組數組?
- 18. 在underscore.js模板中遍歷對象
- 19. 在javascript中遍歷數組?
- 20. 通過在其中創建的數組循環遍歷
- 21. 遍歷數組以在ruby中創建變量
- 22. 如何做語言(I18n)特定的速度模板
- 23. Django模板:遍歷類/串
- 24. Django模板外鍵遍歷
- 25. Django模板遍歷request.GET
- 26. Cakephp - 如何遍歷電子郵件模板中的數組?
- 27. pyrocms模板變量中的遍歷數組
- 28. 運行循環來遍歷對象的數組在玉模板
- 29. 如何在速度模板中創建麪包屑
- 30. 遍歷數組
不過,請注意$ foo.add(53);在文檔中呈現「真」或「虛假」。爲了防止你需要將它包裝在#if中。 – sproketboy 2015-06-08 15:30:29
答案中已經涵蓋了渲染真假的例子。 – 2015-06-09 13:03:04
噢,對不起。我才發現。你可以使用add方法和返回void的index參數。 – sproketboy 2015-06-10 15:01:34