1 #macro(formatIncreaseData $increase) 2 #if(${product.onlineStatusFlag} =='0') 3 -- 4 #elseif(!$increase || $increase=="") 5 -- 6 #else 7 #if($increase >= 0) 8 #set($color = "increase-number") 9 #elseif($increase < 0) 10 #set($color = "is-decrease") 11 #end 12 <span class="$!{color}">${NumberUtils.percentageFormat($!{increase})}</span> 13 #end 14 #end
1 #macro(renderTheme $themeList) 2 #if($themeList.size()>0) 3 #foreach($renqi in $themeList) 4 #set($themeSelected="") 5 #set($closeIcon = "") 6 #if($!{fundGroupId} == $renqi.id) 7 #set($themeSelected="cur") 8 #set($closeIcon = "<span class='closeIcon'></span>") 9 #end 10 <li><a class="theme-name $!{themeSelected}" data-sk="All-reMen" title="$!{renqi.memo}" href=" " data-identity="fundGroupId" data-val="$!{renqi.id}"><span class="">$!{renqi.groupName}</span> 11 $!{closeIcon} 12 </a > 13 </li> 14 #end 15 #end
Velocity中的宏可以理解为函数的定义,在使用的时候,需要考虑到宏的作用域的问题。
1、外层的宏中的变量在内存的宏中可以访问
2、内层中的宏变量如果与外层的变量名冲突,如果有传值则取传入的值,如果没有传值,则取上层的宏中的值!
以上的例子中定义了名为:
formatIncreaseData 和 renderTheme 的函数
调用方式为:
1 #renderTheme($fundGroup.renqiList) 2 #renderTheme($fundGroup.zhutiList)
所以,velocity的宏使Velocity作为一个同步的模板引擎的功能达到最大化!