#macro(tree $tree)
 #foreach($type in $!tree)
        <ul>
#if($type.sonType.size() != 0 )
    <li class="closed">
<span class="folder"><a>$type.typename</a></span> 
#foreach($stype in $type.sonType)
                     #tree($stype)  ##此处使用递归
                 #end
    </li>
#else
<li><span class="file"><a>$type.typename</a></span></li> 
#end
        </ul>
#end
#end我使用velocity 写树形菜单模板 想使用递归 但是行不通, 希望知道的朋友指教

解决方案 »

  1.   

    velocity不是为了编程,而是输出数据或控制,而树形菜单几乎都是用js实现的,你只需要把菜单输出页面上,用一定的标签规则包裹起来,然后用js去控制,这样既能保证搜索引擎的收录,也让层次分的更清楚。
      

  2.   

    可以使用的 前段时间公司说用我就看了 结果不用了  我下面解析的是一个needs的list  每一个need又是一个map 然后又遍历了一次map 应该能满足你的需求了。。 
    #set($test="a")
    #foreach( $need in $needs )
    $needs.size()
    $need.toString()
    $need.name
    $need.date
    #set($test=$test+$need.name)
    $test
    #foreach($key in $need.values.keySet())
    $key:$need.values.get($key)
    #end
    #end