« Return to Thread: Issue with $velocityCount in 1.5

Issue with $velocityCount in 1.5

by mraible :: Rate this Message:

Reply to Author | View in Thread

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)

 « Return to Thread: Issue with $velocityCount in 1.5