请教一个关于velocity递归的问题

wubai 发布于 2011/04/14 23:57
阅读 1K+
收藏 1

模板如下:
#macro(recur$p_id)
#foreach ($cat in $list)
$cat.name $cat.id $p_id
#if ($cat.pid == $p_id)
  data:$cat.name $cat.id
  #recur($cat.id)

#end
#end
#end

#recur(0)

 

Catalog.java如下:
public class Catalog {
 public Catalog(int id, int pid, String name) {
  super();
  this.id = id;
  this.pid = pid;
  this.name = name;
 }
 
 private int id;
 private int pid;
 private String name;
 public int getId() {
  return id;
 }
 public void setId(int id) {
  this.id = id;
 }
 public int getPid() {
  return pid;
 }
 public void setPid(int pid) {
  this.pid = pid;
 }
 public String getName() {
  return name;
 }
 public void setName(String name) {
  this.name = name;
 }
}

数据如下:
List<Catalog> list = new ArrayList<Catalog>();
list.add(new Catalog(1,0,"home"));
list.add(new Catalog(2,0,"news"));
list.add(new Catalog(3,0,"about"));
list.add(new Catalog(4,2,"news-1"));
list.add(new Catalog(5,2,"news-2"));
list.add(new Catalog(6,2,"news-3"));

问题进行递归时从第二级就不能出来了。

 

加载中
0
红薯
红薯

velocity 的宏不能做递归哦

0
wubai
wubai

引用来自#2楼“红薯”的帖子

velocity 的宏不能做递归哦

 可以的,我使用下面的代码没有问题

#macro(recurA $depth)
 进入第$depth层
#set($depth=$depth - 1)
#if($depth>0)
  #recurA($depth)
#end
#end
##recurA(3)

0
红薯
红薯

http://velocity.apache.org/engine/devel/user-guide.html#Velocimacros

通篇的 velocity 介绍 macro 的文档都没有提及宏嵌套的问题

而且我记得在比较早期的版本中,似乎明确说明了不可以嵌套

0
wubai
wubai

如果不能使用递归,这种树状结构怎么使用模板生成树状结构呢。

0
红薯
红薯

引用来自#5楼“wubai”的帖子

如果不能使用递归,这种树状结构怎么使用模板生成树状结构呢。

你可以把这种递归的方法封装到 toolbox 里嘛,用java来做

返回顶部
顶部