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的其他资源的评论。