grails动态访问域对象

时间:2011-11-08 06:52:35

标签: grails

我在grails工作 我从gsp获取我的域类名,以访问此域类的对象实例(特定id)。我正在尝试以下代码。它是否正确?

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

   def instance = className.get(id);

还有其他办法吗?

2 个答案:

答案 0 :(得分:3)

首先,您必须在控制器中注入grailsApplication bean。

def grailsApplication 

之后,您可以使用getClassForName方法按名称检索所需的类。

grailsApplication.getClassForName(className).

您必须使用完整的合格类名称,例如my.test.MyClass

答案 1 :(得分: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")