我有一个名为ABCDCode的域类,并为此ABCDCodeService创建了服务。现在,我想在 Controller 中使用此服务,因此我将其编写如下:

class TestController{
      ABCDCode abcdCode

      def index(int id){
           abcdCode.getData(id) //Here I am getting NullPOinterException
      }
}

我怀疑自动布线的名称有问题。

最佳答案

Grails为bean命名查找前两个字符。如果 Controller /服务的第二个字符为大写,则Grails不会将第一个字符转换为小写。

例如,TestService bean名称为testService,而TEstService bean名称为TEstService。

因此,您的代码成为

ABCDCode ABCDCode

def index(int id){
    ABCDCode.getData(id)
}

但是,如果要使用abcdCode作为bean名称,则可以在resources.groovy的帮助下进行操作。将以下内容添加到resources.groovy文件中-
beans = {
    springConfig.addAlias 'abcdCode', 'ABCDCode'
}

09-04 15:49