我正在生成速度报告。我目前正在遍历文档(ID)的集合,对于每个文档,我都可以获得关系列表。
我想为每个这些ID调用相同的函数,以查看是否存在进一步的关系:
我考虑了一个while循环,但后来发现不支持该循环。
## Loop through the selection of documents
#foreach( $vDoc in $documentList )
## for each document obtain a list of all upostream relationships
#foreach($h1 in $relDao.getUpstreamDocumentIds($vDoc.document.id))
## Need recursion in here....
## need to keep getting the upstream IDs until the size is zero and then return that ID
#end
#end
答案 0 :(得分:0)
这是一种实现速度递归的方法。 我们可以利用宏,定义宏并与基本情况一起递归使用
相同的代码段。根据要求进行修改。
## ***Call the macro for the first time***
#reportMacro($documentList)
## ***This is the definition of the macro***
#macro(reportMacro $documentList)
{
## Loop through the selection of documents
#foreach( $vDoc in $documentList )
## for each document obtain a list of all upostream relationships
#foreach($h1 in $relDao.getUpstreamDocumentIds($vDoc.document.id))
#if("$h1" != "" && ${h1.size()} > 0)
## ***Recursively call the macro ***
#reportMacro($h1)
#else
this marks end of recursion do some operations here if needed ...
#end
#end
#end
}
#end