### 12.4.1. Foreach 循環
\#foreach 元素允許進行循環,例如:
```
<ul>
#foreach( $product in $allProducts )
<li>$product</li>
#end
</ul>
```
這個\#foreach 循環將導致$allProducts 列表 (對象) 為查詢所有的產品$products (目標)遍歷一遍。每次經過循環,從$allProducts取得的值將置于$product 變量之中。
$allProducts 變量的內容是一個矢量,一個哈希表或者數組。賦給$product 變量的值是一個Java 對象并且可以從一個類似的變量引用。例如,如果 $product 真是一個Java的產品類,其名稱可以通過引用$product.Name 方法來檢索(即: $Product.getName())。
我們假定 $allProducts 是一個哈希表。如果你想檢索關鍵字的值或者在哈希表中的對象,你可以使用以下的代碼:
```
<ul>
#foreach( $key in $allProducts.keySet() )
<li>Key: $key -> Value: $allProducts.get($key)</li>
#end
</ul>
```
Velocity 提供一個更容易的方式或的循環計數,以便你可以做下面類似的工作:
```
<table>
#foreach( $customer in $customerList )
<tr><td>$velocityCount</td><td>$customer.Name</td></tr>
#end
</table>
```
循環計數變量的缺省名稱是$velocityCount,在velocity.properties 配置文件中標明。默認情況下,該變量從1開始計數,但是可以在velocity.properties 文件中設為從0或者1開始。下面是velocity.properties 文件中循環變量設置一節:
```
# 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
```
- 1. 關于
- 2. 什么是Velocity?
- 3. Velocity 可以做什么?
- 3.1. Mud Store 示例
- 4. Velocity模板語言(VTL): 介紹
- 5. Hello Velocity World!
- 6. 注釋
- 7. 引用
- 7.1. 變量Variables
- 7.2. 屬性
- 7.3. 方法
- 8. 形式引用符Formal Reference Notation
- 9. 安靜引用符Quiet Reference Notation
- 11. Case Substitution
- 12. 指令
- 12.1. #set
- 12.2. 字面字符串
- 12.3. 條件
- 12.3.1 If / ElseIf / Else
- 12.3.2 關系和邏輯操作符
- 12.4. 循環
- 12.4.1. Foreach 循環
- 12.5. 包含
- 12.6. 解析
- 12.7. 停止
- 12.10. 宏
- 12.10.1. Velocimacro 參數
- 12.10.2. Velocimacro 屬性
- 12.10.3. Velocimacro Trivia
- 13. Getting literal
- 13.1. 貨幣字符
- 13.2. 轉義 有效的 VTL 指令
- 13.3. 轉義 無效的 VTL 指令
- 14. VTL 格式化問題
- 15. 其它特征和雜項
- 15.1. 數學特征
- 15.2. 范圍操作符
- 15.3. 進階:轉義和!
- 15.4. Velocimacro 雜記
- 15.5. 字符串聯