Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/grails/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Grails doWithDynamicMethods访问服务_Grails_Grails Plugin - Fatal编程技术网

Grails doWithDynamicMethods访问服务

Grails doWithDynamicMethods访问服务,grails,grails-plugin,Grails,Grails Plugin,我难以使用DynamicMethod访问Dow内的特定服务 def doWithDynamicMethods = { ctx -> def nodeDriverProxy = application.getServiceClass('NodeDriverProxyService') application.domainClasses.each{ cClass -> delegate.log.warn('cClass: ' +

我难以使用DynamicMethod访问Dow内的特定服务

def doWithDynamicMethods = { ctx ->
        def nodeDriverProxy  = application.getServiceClass('NodeDriverProxyService')
        application.domainClasses.each{ cClass ->
            delegate.log.warn('cClass: ' + cClass.toString())
            cClass.metaClass.cacheInstance = { domainIns->
                delegate.log.warn "domain is being cached id: ? with version ?"
                nodeDriverProxy.registerUpdate(domainIns.id, domainIns.version)
            }

变量nodeDriveProxy为null,或者我在访问“application.serviceClasses”时遇到异常我做错了什么?谢谢

您不需要
GrailsServiceClass
,您需要的是服务实例。您有
ctx
变量,它是Spring
ApplicationContext
,因此

def doWithDynamicMethods = { ctx ->
   def service = ctx.nodeDriverProxyService
   application.domainClasses.each { cClass ->
      delegate.log.warn('cClass: ' + cClass.toString())
      cClass.metaClass.cacheInstance = { domainIns ->
         delegate.log.warn "domain is being cached id: ? with version ?"
         service.registerUpdate(domainIns.id, domainIns.version)
      }
   }
}

谢谢你,伯特。你真的很棒。我从您对其他grails开发人员的其他回答中学到了很多。谢谢你的帮助