按字段名称获取字段并为其设置值

时间:2014-07-18 13:01:48

标签: grails groovy

我想为域类中的字段设置一个值。 例如,

class Example {
   String name
   String lastName
}

现在,从响应中我得到域名,对象实例ID,字段名称和值。我必须将值设置为域类中的字段。

这里我得到了值

domainName = 'Example'
instanceId = 1
fieldName = 'name'
valueToSet = 'XYZ'

那么我应该如何设置字段名称的值?可能这很简单,但我是grails和groovy的新人。

2 个答案:

答案 0 :(得分:2)

根据域名,必须在运行时创建新的域实例。要做到这一点,必须注入grailsApplication。这是一个可以在Controller或Service类中建模的示例:

class SomeService {
    def grailsApplication

    def someMethod(String domainName, long instanceId, 
                   String fieldName, def valueToSet) {

        Class domainClazz = grailsApplication.domainClasses.find { 
            it.clazz.simpleName == domainName 
        }.clazz

        def domainInstance = domainClazz.get( instanceId )
        domainInstance."$fieldName" = valueToSet

        domainInstance.save()
    }
}

答案 1 :(得分:0)

您可以通过为其属性分配映射来填充Grails域类,例如从控制器中的params(使用该方便的自动绑定)。 E.g:

ded example = new Example() example.properties =参数

因此,您可以从中看到域对象可以被视为一组属性。这意味着你可以使用字符串作为键,所以你可能会有:

例如['名称'] =' XYZ'

我不知道这是否是您所要求的,但我希望它有所帮助。