Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.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依赖项注入不起作用_Grails_Grails Controller - Fatal编程技术网

从服务到控制器的Grails依赖项注入不起作用

从服务到控制器的Grails依赖项注入不起作用,grails,grails-controller,Grails,Grails Controller,根据,我试图将服务依赖性添加到我的控制器中,但不知何故,它对我不起作用。它正在抛出NullPointerException,因为无法在null对象上获取属性“serviceMethod”。下面我将介绍复制的步骤 执行以下命令 grails create-app DepInjectionTest grails create-controller com.abc.project.KpiReport grails create-service com.abc.project.KpiReport 上面

根据,我试图将服务依赖性添加到我的控制器中,但不知何故,它对我不起作用。它正在抛出
NullPointerException
,因为
无法在null对象上获取属性“serviceMethod”。
下面我将介绍复制的步骤

执行以下命令

grails create-app DepInjectionTest
grails create-controller com.abc.project.KpiReport
grails create-service com.abc.project.KpiReport
上面创建下面的目录结构

KpiReportService

@Transactional
class KpiReportService {

    def serviceMethod() {
        return "Hello from KpiReportService"
    }
}
KpiReportController

class KpiReportController {
    def index() {
        def kpiReportService
        render kpiReportService.serviceMethod
        //render "Hello from KpiReportController"
    }
}
例外情况

Grails application running at http://localhost:8080 in environment: development
ERROR org.grails.web.errors.GrailsExceptionResolver - NullPointerException occurred when processing request: [POST] /KpiReport/index
Cannot get property 'serviceMethod' on null object. Stacktrace follows:
java.lang.reflect.InvocationTargetException: null
        at org.grails.core.DefaultGrailsControllerClass$ReflectionInvoker.invoke(DefaultGrailsControllerClass.java:210)
        at org.grails.core.DefaultGrailsControllerClass.invoke(DefaultGrailsControllerClass.java:187)
        at org.grails.web.mapping.mvc.UrlMappingsInfoHandlerAdapter.handle(UrlMappingsInfoHandlerAdapter.groovy:90)
        at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:961)
        at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:895)
        at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:967)
        at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:869)
        at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:843)
        at org.grails.web.servlet.mvc.GrailsWebRequestFilter.doFilterInternal(GrailsWebRequestFilter.java:77)
        at org.grails.web.filters.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:67)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.NullPointerException: Cannot get property 'serviceMethod' on null object
        at com.abc.project.KpiReportController.index(KpiReportController.groovy:7)
        ... 13 common frames omitted
使用邮递员进行请求


我是grails新手,请帮助我找出哪里出了问题,可能是我遗漏了什么。

服务是作为类变量注入的

class KpiReportController {
    def kpiReportService

    def index() {
        render kpiReportService.serviceMethod()
        //render "Hello from KpiReportController"
    }
}

错误消息表示您引用的属性不存在。除了需要在
索引
方法之外声明
kpiReportService
属性之外,您还需要
呈现kpiReportService.serviceMethod
而不是
呈现kpiReportService.serviceMethod
呈现kpiReportService.serviceMethod()

。您在那里显示的内容将不起作用。你犯了和原始海报一样的错误。您需要的不是
kpiReportService.serviceMethod
,而是
kpiReportService.serviceMethod()
。您是对的。但有两次失败——我的答案修复了一次例外。同意。我只是指出你显示的代码不起作用。谢谢