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

时间:2011-04-04 09:21:11

标签: 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中工作 谢谢

2 个答案:

答案 0 :(得分:3)

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

域类:

package myapp

class Book {
...
}

控制器类

package myapp

class BookController {
....
}

答案 1 :(得分:3)

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

  

我创建了一个域类

     

\的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

此代码存在以下几个问题:

  • 将类型定义为def或 <{1}}但不是两个
  • 你错过了一些括号

请改为尝试:

Abc