【问题标题】:Facing Null Pointer Exception: Cannot invoke method firstMethod() on null Object : Grails 3.2.10面对空指针异常:无法在空对象上调用方法 firstMethod():Grails 3.2.10
【发布时间】:2017-11-06 21:42:50
【问题描述】:

我在 Grails 3.2.10 版本中写了一个简单的 rest-api 控制器。下面是我的系统配置。创建的应用也是rest-api profile。

Grails 版本:3.2.10 Groovy 版本:2.4.10 JVM版本:1.8.0_131

编写的示例代码如下: 控制器:

package mydevpath

import grails.rest.*
import grails.converters.*

class LoginController {
static responseFormats = ['json', 'xml']

def index() {
        def loginService
        def val = loginService.firstMethod()

        render 'hello World' + val
     }
   }

服务:` 包 mydevpath

import grails.transaction.Transactional

 @Transactional
 class LoginService {
    static scope = "prototype"

     def firstMethod(){
        return 'From Service'
  }
}

在运行并点击 URL 时,我面临以下错误。

NullPointerException occurred when processing request
: [POST] /login
Cannot invoke method firstMethod() on null object. Stacktrace follows:

java.lang.reflect.InvocationTargetException: null
        at org.grails.core.DefaultGrailsControllerClass$ReflectionInvoker.
invoke(DefaultGrailsControllerClass.java:211)
        at org.grails.core.DefaultGrailsControllerClass.invoke(DefaultGrai
lsControllerClass.java:188)

有人可以帮我解决这个问题吗?

问候, 普拉莫德

【问题讨论】:

  • loginService.firstMethod() 导致问题。 loginService 初始化在哪里?

标签: grails groovy


【解决方案1】:

您的服务应该在 index 操作之外声明:

package mydevpath

import grails.rest.*
import grails.converters.*

class LoginController {
static responseFormats = ['json', 'xml']

def loginService

def index() {
    def val = loginService.firstMethod()

    render 'hello World' + val
}
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-07
    • 1970-01-01
    • 1970-01-01
    • 2011-08-07
    • 2013-09-17
    • 1970-01-01
    相关资源
    最近更新 更多