【发布时间】:2015-03-02 20:43:04
【问题描述】:
如何覆盖删除方法?
此构造不会覆盖我做错的方法? :
def NOT_TOUCH = ['Assets', 'Dbdoc', 'Login', 'Logout']
grailsApplication.controllerClasses.each {controller ->
if(NOT_TOUCH.findAll{it == controller.name} == []){
controller.metaClass.delete = { Map m ->
....
}
}
}
【问题讨论】:
-
目前还不清楚您要做什么。不清楚的一件事是为什么您希望
delete方法接受Map参数。除此之外,一个问题是您可能想要操纵controller.clazz.metaClass而不是controller.metaClass。此外,处理NOT_TOUCH事物的更有效方法是if(!(controller.name in NOT_TOUCH)) {...}。 -
另外,请注意,您的运行时元编程不会在 Java 代码或任何标有 @CompileStatic 的 Groovy 代码中可见。核心框架的一部分属于这些类别中的每一个。我建议您在groups.google.com/forum/#!forum/grails-dev-discuss 上发帖说明您真正想要完成的工作。根据您要完成的工作,几乎可以肯定有比您在此处描述的更好的方法。
-
为什么调用instance.save时没有设置修饰符插入/更新? github.com/grails/grails-core/blob/master/grails-plugin-rest/…
-
我无法理解覆盖 save "domainClazz.metaClass.save = { Map m -> ...." 时执行了什么操作?
-
这不是您问题的答案,但为什么您希望保存操作接受
Map参数?即使您尝试做的事情会奏效(它不会),我也不知道您想用Map完成什么。我建议您在 groups.google.com/forum/#!forum/grails-dev-discuss 上发布一条说明,描述您真正想要完成的工作。根据您要完成的工作,几乎可以肯定有比您在此处描述的更好的方法。