域类在我的控制器无法访问

问题描述:

我是新来的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上工作012. 谢谢

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

我创建了一个域类

\的grails-app \域\美国广播公司

这个类应该是这样的

class Abc { 
    // implementation omitted 
} 

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

现在我在

\的grails-app \控制器创建控制器\ MYAPP \ myController的

这个类应该是这样的

package myapp 

class myController { 
    // implementation omitted 
} 

注意,此类应以小写'm'命名,因为这就是文件的命名方式。标准的Java/Groovy命名约定规定类应以大写字母开头。

在那,当我创建一个对象,它显示错误。

def Abc obj = new Abc 

有几个与此代码的问题:

  • 定义类型,无论是defAbc但不能同时
  • 你错过了一些括号

试试这个:

Abc obj = new Abc() 
+0

waw ...谢谢...它真的帮助我.. – Jithin 2011-04-04 12:39:56

+0

确实很好的解释。 – 2011-04-05 01:28:33

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

域类:

package myapp 

class Book { 
... 
} 

Controller类

package myapp 

class BookController { 
.... 
} 
+0

如果他的控制器已经在名为myapp的包装中,那么它在正确的文件夹 – 2011-04-04 10:27:42

+0

@Don:我认为最好尽可能简化;并举例说明。如果myapp文件夹中的控制器,域类也应该位于域/ myapp中。 – 2011-04-04 10:43:53

+0

谢谢你的回答...问题是与包 – Jithin 2011-04-04 12:40:31