1

我想做的是找到一个域,然后创建一个新域或保存已有的域。这是我目前正在使用的代码(在这个项目中,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
                }
            }
        }
    }

这似乎不起作用。谁能帮我解决问题?

4

1 回答 1

5

返回的对象getDomainClass是 的一个实例GrailsDomainClass。要获取您可以调用的实际域类get,请先调用getClazz它。例如:

Class lob = grailsApplication.getDomainClass('skeleton.'+params.lob.name).clazz

此外,您必须调用newInstance类对象而不是使用new关键字来创建新实例。

于 2012-07-11T19:36:06.087 回答