2012-07-31 68 views
2

我希望能夠根據此處定義的約定將我的元類放入groovy.runtime.metaclass包using the delegating meta class中。我已將MyClassMetaClass置於groovy.runtime.metaclass.mypackage.中,具體類別爲mypackage.MyClass{}。不幸的是,撥打MyClass{}不會被MyClassMetaClass{}攔截。也許這與grails如何初始化有關?Grails和Groovy元類包名稱約定

+0

看起來你一切都好。發佈一些代碼,以便我們可以獲得更多信息。我現在可以想到的一件事是如果你擴展了DelegatingMetaClass。 – 2012-07-31 20:00:36

+1

@TiagoFarias我可以讓MetaClass在正常的groovy項目中工作,但不能用於grails項目。 – Kurent 2012-08-01 13:28:20

回答

0

通過更改BootStrap.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 = { 
    } 
} 

Ofcourse這不像實現委託元問題提到的問題。