2012-04-25 77 views
1

我试过多个应用程序重新启动,并从2.0.0升级到2.0.3,没有帮助。我总是得到这个消息:服务没有被注入到Grails域的类,Grails 2.0.0和2.0.3

: def getCustomerName(){64:  customerService.name 
"Cannot get property 'name' on null object" 

相关领域类部分:

class Instance { 
    def customerService 
    ... 

    def getCustomerName(){ 
     customerService.name 
    } 

相关的服务类:

class CustomerService { 

我试图从其中有一个视图访问getCustomerName方法访问实例的对象。也尝试过与其他服务一样的结果。

+0

是在'的grails-app/services'子目录服务类的源文件? – ataylor 2012-04-25 18:23:48

+0

是的。我还应该提到CustomerService注入在Controller中工作,而不是在Domain对象中。 – 2012-04-25 19:07:18

+0

你有没有尝试做一个grails干净,然后运行你的应用程序。如果它在控制器中工作,它应该,不能想到其他任何东西。 – allthenutsandbolts 2012-04-25 19:27:37

回答

3

这里只是一个猜测 - 以下读起来就像一个getter方法:

def getCustomerName() 

是否有可能在框架的依赖注入发生之前检查的有效性的getter和setter方法?

几年前,Burt回答了一个关于在onLoad()中使用依赖注入的问题,它似乎就是这样发生的。他建议:

添加此导入:

import org.codehaus.groovy.grails.commons.ApplicationHolder as AH 

然后引用客户服务为

def customerService = AH.application.mainContext.customerService 
+0

更名为“测试”的方法,结果相同。幸运的是(不幸的是)你的建议恢复到手动注入工作,所以我想我会暂时接受AH弃用警告。这看起来像是一个Grails bug,想我应该报告它? – 2012-04-29 20:35:25

+0

它对我来说当然看起来像一个bug。 – Kelly 2012-04-29 22:10:25