Grails和Groovy元类包名称约定
我希望能够根据这里定义的约定将我的元类放在groovy.runtime.metaclass包中。对于具体类Grails和Groovy元类包名称约定,grails,groovy,metaclass,Grails,Groovy,Metaclass,我希望能够根据这里定义的约定将我的元类放在groovy.runtime.metaclass包中。对于具体类mypackage.MyClass{},我已将MyClassMetaClass放在groovy.runtime.metaclass.mypackage.中。不幸的是,MyClassMetaClass{}没有拦截对MyClass{}的调用。也许这与grails如何初始化有关 通过更改BootStrap.groovy,可以在grails项目中使用委托元类 当然,这与问题中提到的实现委托元类不同。
mypackage.MyClass{}
,我已将MyClassMetaClass
放在groovy.runtime.metaclass.mypackage.
中。不幸的是,MyClassMetaClass{}
没有拦截对MyClass{}
的调用。也许这与grails如何初始化有关 通过更改BootStrap.groovy,可以在grails项目中使用委托元类
当然,这与问题中提到的实现委托元类不同。通过更改BootStrap.groovy,可以在grails项目中使用委托元类
当然,这与问题中提到的实现委托元类不同。看起来你做得很好。发布一些代码,以便我们可以获得更多信息。我现在能想到的一件事是,如果您扩展了DelegatingMetaClass。@TiagoFarias我可以在处理普通groovy项目时让该元类工作,但在处理grails项目时却不行。看起来您做得很好。发布一些代码,以便我们可以获得更多信息。我现在能想到的一件事是,如果您扩展了DelegatingMetaClass。@TiagoFarias我可以在处理普通groovy项目时使该元类工作,但在处理grails项目时则不行。
import org.codehaus.groovy.runtime.InvokerHelper
class BootStrap {
def init = { servletContext ->
def myMetaClass = new MyClassMetaClass(MyClass.class)
InvokerHelper.metaRegistry.setMetaClass(MyClass.class, myMetaClass)
}
def destroy = {
}
}