Grails2.4.4。grails.rest.RestfulController。如何覆盖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

如何覆盖delete方法

此构造不会覆盖我做错的方法?:

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这个答案可能是正确和有用的,如果你在答案中加入一些解释来解释它是如何帮助解决问题的,那么它是首选的。如果将来有一个变化(可能是无关的)导致它停止工作,并且用户需要了解它曾经是如何工作的,这将变得特别有用。