Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.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_Groovy_Grails Domain Class_Grails Controller - Fatal编程技术网

Grails 域类在我的控制器中不可访问

Grails 域类在我的控制器中不可访问,grails,groovy,grails-domain-class,grails-controller,Grails,Groovy,Grails Domain Class,Grails Controller,我是Grails和groovy的新手。 我创建了一个域类 \grails-app\domain\Abc 现在我在中创建了一个控制器 \grails-app\controllers\myapp\myController 在这种情况下,当我创建一个对象时,它会显示错误 def Abc obj = new Abc 我犯的错误是 unable to resolve class Abc 我试图导入,但也没有显示。我在grails 1.3.7和IntelliJ IDEA 10.0.2中工作 谢谢我

我是Grails和groovy的新手。
我创建了一个域类

\grails-app\domain\Abc
现在我在中创建了一个控制器

\grails-app\controllers\myapp\myController
在这种情况下,当我创建一个对象时,它会显示错误

def Abc obj = new Abc
我犯的错误是

unable to resolve class Abc 
我试图导入,但也没有显示。我在grails 1.3.7和IntelliJ IDEA 10.0.2中工作

谢谢

我想您是手动创建了域类和控制器类的。首先,您的控制器应该位于文件夹
controllers
,而不是
myapp
。其次,您应该为域类和控制器类定义一个包,例如:

域类:

package myapp

class Book {
...
}
控制器类

package myapp

class BookController {
....
}

我认为您手动创建了域类和控制器类。首先,您的控制器应该位于文件夹
controllers
,而不是
myapp
。其次,您应该为域类和控制器类定义一个包,例如:

域类:

package myapp

class Book {
...
}
控制器类

package myapp

class BookController {
....
}

确保每个类的位置与类和包声明一致

我创建了一个域类

\grails应用程序\domain\Abc

这个类应该是这样的

class Abc {
    // implementation omitted
}
package myapp
  
class myController {
    // implementation omitted
}
请确保没有包声明,因为根据位置,此类应该位于默认包中(这实际上是一种不好的做法)。理想情况下,您应该将此类放入包中,然后将源文件移动到与包名对应的
\grails app\domain
子目录中

现在我在中创建了一个控制器

\grails app\controllers\myapp\myController

这个类应该是这样的

class Abc {
    // implementation omitted
}
package myapp
  
class myController {
    // implementation omitted
}
注意,这个类应该用小写字母“m”命名,因为文件就是这样命名的。标准Java/Groovy命名约定规定类应以大写字母开头

在这种情况下,当我创建一个对象时,它会显示错误

def Abc obj = new Abc
此代码有几个问题:

  • 将类型定义为
    def
    Abc
    但不是两者都有
  • 你少了一些括号
请尝试以下方法:

Abc obj = new Abc()

确保每个类的位置与类和包声明一致

我创建了一个域类

\grails应用程序\domain\Abc

这个类应该是这样的

class Abc {
    // implementation omitted
}
package myapp
  
class myController {
    // implementation omitted
}
请确保没有包声明,因为根据位置,此类应该位于默认包中(这实际上是一种不好的做法)。理想情况下,您应该将此类放入包中,然后将源文件移动到与包名对应的
\grails app\domain
子目录中

现在我在中创建了一个控制器

\grails app\controllers\myapp\myController

这个类应该是这样的

class Abc {
    // implementation omitted
}
package myapp
  
class myController {
    // implementation omitted
}
注意,这个类应该用小写字母“m”命名,因为文件就是这样命名的。标准Java/Groovy命名约定规定类应以大写字母开头

在这种情况下,当我创建一个对象时,它会显示错误

def Abc obj = new Abc
此代码有几个问题:

  • 将类型定义为
    def
    Abc
    但不是两者都有
  • 你少了一些括号
请尝试以下方法:

Abc obj = new Abc()

如果他的控制器已经在一个名为myapp的包中,那么它在正确的位置folder@Don:我认为最好尽量简化;并给出一个工作示例。如果控制器位于myapp文件夹中,则域类也应位于domain/myapp中。感谢您的回答。。。问题在于软件包如果他的控制器已经在一个名为myapp的软件包中,那么它就在正确的位置folder@Don:我认为最好尽量简化;并给出一个工作示例。如果控制器位于myapp文件夹中,则域类也应位于domain/myapp中。感谢您的回答。。。问题出在包装上