[Grails] controller里找不到domain class的问题

jeady 2008-10-20
我在controllers里建了一个目录,目录里建了一个controller类,如controllers/codec/CodecController.groovy

在domain目录里有一个domain class,FormRemote.groovy,我在CodecController.groovy中new这个domain,却包找不到此类的错:
codec.CodecController: 9: unable to resolve class FormRemote,但我在controllers根目录里建的controller能正常new,他们不在同一目录,我想是不是需要在CodecController里import一下,但按道理是不需要import的呀.

请问大家怎么import那个domain class进CodecController.
agile_boy 2008-10-21
在CodecController里import是怎样的结果?我觉得是不需要的
zw 2008-10-30
controllers目录下不可再建目录,这样违反了grails的规约。你把CodecController.groovy放在controllers目录下就可以了!
flyisland 2008-10-30
to zw@kindsoft.cn,grails可根本没有“controllers目录下不可再建目录”这个规约,不要吓唬新人。

to jeady,这个其实是java的基本规定,我估计也可以成为java的面试题目啊。

如果一个java class没有package定义,也就是直接位于source directory目录下面,那么这个class就是属于default package。

在java里面,同属一个package的class是互相可见的,包括default package;但是不属于同一个的package的,就必须通过import语句引入。

你的问题的答案就变得很简单,你必须要import,而不是“按道理是不需要import的呀”!不过default package是无法import的,呵呵,所以你的这种情况,要么把controller也放到default package中,要么给domain class加上package。
OnJavaRoad 2008-10-31
只需加上package包,不需要import
indexchen 2008-11-04
将domain类也放在package中,然后在controller中import即可
jeady 2008-11-20
抱歉,最近忙,没上来看回复.

flyisland与indexchen说得很对,最终的结果也只能在domain中再加入package,在controller中import.以前的应用没有package,要在domain加package,所有controller都要改,成本太高了,所以放弃了.

agile_boy 2008-12-25
default package确实是用的比较少,现在才知道不能import啊,受教了!
Global site tag (gtag.js) - Google Analytics