2011-11-08 67 views
0

我在grails中工作,並且我在gsp中獲取我的域名類以訪問此域類的對象實例(特定id)。我正在嘗試下面的代碼。它是否正確?grails動態訪問域對象

String id = params['id'] 
    String className = params['className'] 

    def instance = className.get(id); 

有沒有其他辦法呢?

回答

3

首先,您必須將grailsApplication bean注入到控制器中。

def grailsApplication 

後,您可以使用getClassForName方法,通過名稱檢索所需類。

grailsApplication.getClassForName(className). 

您必須使用全限定類名,例如my.test.MyClass

+3

在控制器不需要'高清grailsApplication' - 變量已經被添加到元類 –

1
def id = params.id 
def className = params.'className' 

def domainClazz = grailsApplication.classLoader.loadClass(className) 
def instance = id ? domainClazz.get(id as Long) : null 

您可以:

grailsApplication.classLoader.loadClass("Book") 

grailsApplication.classLoader.loadClass("com.yourapp.Book") 
+1

注意'grailsApplication.classLoader.loadClass(「Book」)'不起作用。所以更安全的方法是通過grails文物找到課程。 – omarello