我想为域类中的字段设置一个值。 例如,
class Example {
String name
String lastName
}
现在,从响应中我得到域名,对象实例ID,字段名称和值。我必须将值设置为域类中的字段。
这里我得到了值
domainName = 'Example'
instanceId = 1
fieldName = 'name'
valueToSet = 'XYZ'
那么我应该如何设置字段名称的值?可能这很简单,但我是grails和groovy的新人。
答案 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'
我不知道这是否是您所要求的,但我希望它有所帮助。