I've been using Velocity 1.4 for a couple of years now with great success. Today, I tried to use Struts Menu 2.4.2 with Velocity 1.5 and found an issue with $velocityCount not being properly processed. My template is below.
The problem occurs on the following line:
#if ($velocityCount == $menu.parent.components.size())
<li class="last">
#else
With 1.4, $velocityCount turns into a number when the displayCssMenu macro is called from #foreach. However, in 1.5, it's never turned into a number.
Any ideas?
Thanks,
Matt
#macro( displayCssMenu $menu )
#if ($displayer.isAllowed($menu))
## set menu title
#set ($title = $displayer.getMessage($menu.title))
#if (!$menu.url) #set ($url="javascript:void(0)") #else #set ($url=$menu.url) #end
## create a single menu item
#if ($menu.components.size() == 0)
#if ($velocityCount == $menu.parent.components.size())
<li class="last">
#else
<li>
#end
#if ($menu.name == $currentMenu)
${title} #else
${title} #end
#else ## create multiple menu items in a menu
#if ($menu.components.size() > 0)
#set ($hasViewableChildren = false)
#foreach ($menuIt in $menu.components)
#if ($displayer.isAllowed($menuIt))
#set($hasViewableChildren = true)
#end
#end
#end
<li#if ($hasViewableChildren) class="menubar"#end>
${title} #end
#if ($menu.components.size() > 0)
#if ($hasViewableChildren)
<ul>
#end
#foreach ($menuIt in $menu.components)
#displayCssMenu($menuIt)
#end
#if ($hasViewableChildren && ($velocityCount == $menu.parent.components.size()))
</ul>
#else
</li>
#end
#else
</li>
#if ($velocityCount == $menu.parent.components.size())
</ul>
#end
#end
#end
#end
#displayCssMenu($menu)