Grails2.4.4。grails.rest.RestfulController。如何覆盖delete方法?
如何覆盖delete方法 此构造不会覆盖我做错的方法?:Grails2.4.4。grails.rest.RestfulController。如何覆盖delete方法?,grails,grails-controller,Grails,Grails Controller,如何覆盖delete方法 此构造不会覆盖我做错的方法?: def NOT_TOUCH = ['Assets', 'Dbdoc', 'Login', 'Logout'] grailsApplication.controllerClasses.each {controller -> if(NOT_TOUCH.findAll{it == controller.name} == []){ controller.metaClass.del
def NOT_TOUCH = ['Assets', 'Dbdoc', 'Login', 'Logout']
grailsApplication.controllerClasses.each {controller ->
if(NOT_TOUCH.findAll{it == controller.name} == []){
controller.metaClass.delete = { Map m ->
....
}
}
}
仅适用于重定向和响应:
def NOT_TOUCH = ['Assets', 'Dbdoc', 'Login', 'Logout']
grailsApplication.controllerClasses.each {controller ->
if(!(controller.name in NOT_TOUCH)){
controller.clazz.metaClass.invokeMethod = { String name, args ->
...
}
}
}
现在还不清楚你想做什么。有一点不清楚,那就是为什么希望
delete
方法接受Map
参数。与此不同的是,一个问题是您可能希望操作controller.clazz.metaClass
,而不是controller.metaClass
。另外,处理NOT_TOUCH
问题的更有效方法是if(!(NOT_TOUCH中的controller.name)){…}
。另外,请注意,您的运行时元编程不会从Java代码或任何标记为@CompileStatic的Groovy代码中可见。核心框架的各个部分都属于这些类别。我建议你贴一张便条来描述你真正想要实现的目标。根据您试图完成的任务,几乎可以肯定有一种比您在这里描述的更好的方法来完成。为什么在调用instance.save时不设置修饰符插入/更新?我不明白重写save“domainClazz.metaClass.save={Map m->…”时执行的操作是什么?这不是您问题的答案,但为什么您希望save操作接受Map
参数?即使您尝试执行的操作可行(不会),我不知道你想用地图完成什么。我建议你在群组中发布一条说明。google.com/forum/#!forum/grails dev讨论你真正想完成的事情。根据你想完成的事情,几乎可以肯定有比你在这里描述的更好的方法。While这个答案可能是正确和有用的,如果你在答案中加入一些解释来解释它是如何帮助解决问题的,那么它是首选的。如果将来有一个变化(可能是无关的)导致它停止工作,并且用户需要了解它曾经是如何工作的,这将变得特别有用。