我想做的是找到一个域,然后创建一个新域或保存先前存在的域。这是我当前正在使用的代码(在此项目中,skeleton是程序包名称):
def save() {
Class lob = grailsApplication.getDomainClass('skeleton.'+params.lob.name)
def instance = lob.get(params.lob.id)
if (instance){
params.data.each { name, value ->
if (instance.metaClass.hasProperty(name)){
instance[name] = value
}
}
}else{
instance = new lob()
params.data.each { name, value ->
if (instance.metaClass.hasProperty(name)){
instance[name] = value
}
}
}
}
这似乎不起作用。谁能帮我解决这个问题?
最佳答案
getDomainClass
返回的对象是 GrailsDomainClass
的实例。要获取可以在其上调用get
的实际域类,请首先在其上调用getClazz
。例如:
Class lob = grailsApplication.getDomainClass('skeleton.'+params.lob.name).clazz
另外,您必须在类对象上调用
newInstance
,而不是使用new
关键字来创建新实例。
关于grails - Grails找到域,然后将其保存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11440011/