### 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. 字符串联