2010-08-15 83 views
0

據Grails的API,我們可以檢索這樣GrailsApplication的src /班

import org.codehaus.groovy.grails.commons.ApplicationHolder as AH 
AH.application.domainClasses 

我在src/Groovy中定義的類,並希望做同樣通過GrailsApplication所有領域類的定義。我嘗試使用follwing代碼但不成功

import org.codehaus.groovy.grails.commons.ApplicationHolder as AH 
AH.application.allClasses 

根據Grails的API,來電getAllClasses應由Grails的類裝載器返回加載的所有類

類[] getAllClasses() 檢索所有的java。由Grails的類加載器

我思念的東西裝lang.Class實例

+0

爲什麼你的域名類在src/groovy下?他們是休眠類嗎? – Molske 2010-08-15 19:16:35

回答

3

任何Java或Groovy代碼都可以放在src目錄中,而不必與Grails集成。 Grails類加載器僅加載Grails特定的類,例如,在運行時您的grails應用程序知道的插件,控制器和域類。爲了找到位於src目錄中的類,您需要知道您感興趣的包名,然後遍歷該包中包含的所有內容。

3

。 那麼'src'下的類沒有使用grails classLoader註冊。但是你可以(儘管Java的風格)使用「在上下文類加載器」來獲取這些類很容易使用的一行代碼

Class fetchedClass = Class.forName(
    "Class Full Name Here", 
    true, 
    Thread.currentThread().getContextClassLoader() 
) 


多數民衆贊成在.. .. :)所有完成!容易。 。

實例來獲取類 「com.myPackage.dto.AddressDTO」 我們會做:

例: GET類 「com.myPackage.dto.AddressDTO」

Class fetchedClass = Class.forName(
     "com.myPackage.dto.AddressDTO", 
     true, 
     Thread.currentThread().getContextClassLoader() 
    )