在Web开发过程中,模板引擎是连接后端逻辑与前端展示的重要工具。Velocity 是一个广泛使用的 Java 模板引擎,它允许开发者通过简单的语法将动态数据嵌入到 HTML、XML 或其他文本格式中。其中,#foreach 循环是 Velocity 中最常用的功能之一,用于遍历集合或数组,并生成重复的 HTML 结构。
本文将详细介绍 Velocity 中 #foreach 的基础语法与核心功能、高级特性以及实际应用场景,帮助开发者更好地掌握这一强大的模板控制结构。
#foreach 是 Velocity 中用于迭代集合的指令,它支持对 List、Map、数组等数据结构进行遍历。其基本语法如下:
#foreach( $item in $list )
...
#end$item:表示当前迭代的元素。
$list:表示要遍历的集合对象。
例如,假设有一个名为 users 的 List,其中包含多个用户对象,可以通过以下方式遍历并输出每个用户的姓名:
#foreach( $user in $users )
<p>用户名:$user.name</p>
#end在此示例中,$user.name 表示每个用户对象中的 name 属性。Velocity 会自动处理数据类型的访问,无需显式调用 getter 方法。
此外,#foreach 还支持对 Map 的遍历,可以同时获取键和值:
#foreach( $entry in $map )
<p>键:$entry.key,值:$entry.value</p>
#end在这个例子中,$entry.key 和 $entry.value 分别代表 Map 中的键和值。
使用索引变量
在某些情况下,可能需要知道当前迭代的索引位置。Velocity 提供了 #set 指令来定义变量,结合 #foreach 可以实现这一点:
#set( $index = 0 )
#foreach( $item in $list )
<p>第 $index 项:$item</p>
#set( $index = $index + 1 )
#end上述代码中,每次循环都会递增索引变量,从而实现对当前项位置的跟踪。
判断集合是否为空
在遍历之前,通常需要判断集合是否为空,以避免不必要的渲染或错误。Velocity 提供了 #if 指令配合 #foreach 使用:
#if( $list.size() > 0 )
#foreach( $item in $list )
<p>$item</p>
#end
#else
<p>没有数据。</p>
#end这种写法可以有效防止空指针异常,提高程序的健壮性。
使用条件语句控制循环内容
在 #foreach 内部,还可以使用 #if 来根据条件决定是否显示某部分内容:
#foreach( $item in $list )
#if( $item.isActive )
<p>激活状态:是</p>
#else
<p>激活状态:否</p>
#end
#end该方法适用于需要根据数据属性动态显示内容的场景。
嵌套循环
在处理多维数据结构时,#foreach 支持嵌套使用,即在一个循环内部再启动另一个循环:
#foreach( $group in $groups )
<h3>$group.name</h3>
#foreach( $user in $group.users )
<p>$user.name</p>
#end
#end这种结构常用于展示分组数据,如按部门分类的员工列表。
生成表格数据
在 Web 应用中,经常需要将数据库查询结果以表格形式展示。使用 #foreach 可以轻松实现这一目标:
<table>
<tr>
<th>ID</th>
<th>名称</th>
</tr>
#foreach( $item in $dataList )
<tr>
<td>$item.id</td>
<td>$item.name</td>
</tr>
#end
</table>该示例展示了如何从后端传入的数据集中动态生成 HTML 表格。
生成菜单项或导航栏
在构建网站导航栏时,#foreach 可以用来遍历菜单项,生成对应的链接:
<ul>
#foreach( $menu in $menus )
<li>$menu.title</li>
#end
</ul>该方式使得菜单内容可以根据后端配置动态变化,提高了系统的灵活性。
生成日志信息或报告摘要
在生成系统日志或报表时,#foreach 可以用来遍历事件记录,提取关键信息并展示:
<div class="log-summary">
#foreach( $event in $events )
<p>时间:$event.time,描述:$event.description</p>
#end
</div>这种方式使得日志内容能够以结构化的方式呈现,便于阅读和分析。
![]()
#foreach 是 Velocity 模板引擎中最实用、最常用的指令之一,它不仅支持基础的集合遍历,还具备丰富的高级功能,如索引控制、条件判断、嵌套循环等。通过合理运用 #foreach,开发者可以高效地生成动态页面内容,提升 Web 应用的可维护性和用户体验。
声明:所有来源为“聚合数据”的内容信息,未经本网许可,不得转载!如对内容有异议或投诉,请与我们联系。邮箱:marketing@think-land.com
根据查询的IPvb地址,查询该IPv6所属的区域,城市级查询。
2026美加墨世界杯小组赛、1/16决赛、1/8决赛、1/4决赛、半决赛、季军赛、决赛赛程及积分榜
提供多种拟人音色,支持多语言及方言,并可在同一音色下输出多语言内容。系统可自适应语气,流畅处理复杂文本。
Nano Banana(gemini-2.5-flash-image 和 gemini-3-pro-image-preview图像模型)是图像生成与编辑的最佳选择,可集成 Nano Banana API,实现高速预览。
支持通过自然语言文本智能生成高质量短视频。用户只需输入一段描述性文字,即可自动合成画面连贯、风格鲜明、配乐匹配的定制化视频内容。适用于短视频创作、广告预演、社交内容生成、游戏素材制作等场景,为开发者与创作者提供高效、灵活、富有想象力的视频生产新范式。