[英]Apache Velocity “generic” macro
我们正在使用 Velocity 生成处理重复任务的结果报告。 我们传入一个已处理包和相关结果的列表。
#foreach($pkg in $packages)
<tr>
<td>$pkg.name</td>
<td>$pkg.numItems</td>
<td>$pkg.processingTime</td>
<td>$pkg.numErrors</td>
</tr>
#end
现在我们要包括一个总结,即我们要总结不同的结果。 我们考虑使用“通用”宏,我们可以将列表和应该总结的属性名称传递给它。 就像是:
#macro(sum $list $attribute)
#set($total=0)
#foreach($item in $list)
#set($total =$total+$item.$attribute)
#end
$total
#end
但这不起作用 - 是否有可能编写一个“通用”宏来计算列表项目的任何属性的总和,或者我们是否必须在调用速度之前计算它们的总数或单独计算每个属性?
Velocity 并不打算用作脚本语言。 所以
#set( $total = $total+$item.$attribute )
不会像你希望的那样工作。 如果您的 $item class 有一个 get(String attribute) 方法,那么您可以这样做:
#set( $total = $total+$item.get($attribute) )
否则,您可能需要使用 VelocityTools 项目中的 RenderTool 和 MathTool 破解一些东西。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.