从服务到控制器的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()
。您是对的。但有两次失败——我的答案修复了一次例外。同意。我只是指出你显示的代码不起作用。谢谢