如何解决无法调用方法本身
| 当我尝试在方法体内自行调用方法时,项目出现错误。我把代码放在gsp中。 他们来了/* Method for appending the child menu */
def createMenuChild = { obj,paramMenuArr ->
def urlChildMenu=obj.menu.url
def idChildMenu=obj.menu.id
def nameChildMenu=obj.menu.name
out << \'<div><a href=\"\'+urlChildMenu+\'\" class=\"mChld\">\'<< nameChildMenu<< \'</div>\'
def childInstance1= Menu.findById(idChildMenu)
def child1MenuInstance= Menu.createCriteria().list{
eq(\"parentMenu\",childInstance1)
order(\"sequence\",\"asc\")
}
if (child1MenuInstance){
child1MenuInstance.each {newIt5 ->
def idChildMenu2=newIt5.id
paramMenuArr.each { newIt6 ->
if (newIt6.menu.id == idChildMenu2){
owner.call (child1MenuInstance,paramMenuArr)
}
}
}
}
}
我使用owner.call来调用方法本身。我有这样的错误
Exception Message: No signature of method: bla.....
有人可以解决吗?
解决方法
我把代码放在gsp中。
您确实应该将这种代码放入taglib中。
有人可以解决吗?
如果这只是一个标准的递归方法,那么执行递归调用的明显方法是:
createMenuChild(child1MenuInstance,paramMenuArr)
尝试使用它代替
owner.call (child1MenuInstance,paramMenuArr)
,您使用的不是常规方法。请参阅:http://groovy.codehaus.org/Closures
ownler.call意味着您要调用闭包的所有者(类)的名为“ call”的方法。也许您可以通过用createMenuChild(child1MenuInstance,paramMenuArr)替换owner.call来修复它。这将使用给定的参数调用闭包。
,这里的技巧是在分配闭包名称之前预先定义它。
def createMenuChild
createMenuChild = {...}
代替
def createMenuChild = createMenuChild = {...}
这样,您就可以引用闭包,而不必调用owner.call。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。