Grails – 无法从Controller调用服务 – >总是得到“无法调用null对象上的方法错误”

我有一个grails应用程序,我在这里按照教程:
http://www.grails.org/Services

我有一些代码

import org.springframework.beans.factory.InitializingBean class SubmitRequestService implements InitializingBean{ def GrailsApplication1 def setting void afterPropertiesSet(){ this.setting = GrailsApplication1.config.setting } def void sendHistoricalContract(HistoricalContract hc_instance){ //... blah blah whatever code } } class SubmitRequestController { def submitRequestService static allowedMethods = [save: "POST", update: "POST", delete: "POST"] def index = { // .... blah blah whatever code submitRequestService.sendHistoricalContract(historicalContractInstance) } } 

不管我做什么,我似乎无法将服务注入控制器。 每当我到达我调用服务的行时,我都会收到错误:

ERROR errors.GrailsExceptionResolver – 无法在null对象上调用方法sendHistoricalContract()

我究竟做错了什么?

提前致谢

GrailsApplication1看起来很奇怪 – 那是什么来的? 如果要访问GrailsApplication实例以获取配置,请对grailsApplication Spring bean使用dependency injection:

 class SubmitRequestService implements InitializingBean { private setting def grailsApplication void afterPropertiesSet() { setting = grailsApplication.config.setting } void sendHistoricalContract(HistoricalContract hc_instance) { //... blah blah whatever code } } 

我的猜测是GrailsApplication1导致服务出现问题,导致它无法注入控制器,但我认为它在启动时会出现exception。 尝试运行grails clean以强制完全重新编译。

我以前碰到过这个。

我将它更改为grailsApplication1并且它工作正常。

然后你打电话:

 this.setting = grailsApplication1.config.setting 

注意服务的情况

Burt的答案很有帮助(+1给Burt)但是如果其他人在这里遵循教程:
http://www.grails.org/Services
并遇到了同样的问题,我想说明一点:

服务放在Services目录下的自己的文件中,你不要将它们与控制器结合起来,即使它在代码示例中看起来那样

请参阅Burt上面关于服务和Spring Framework的其他资源的评论。