当批量更新来自请求参数的属性,你必须小心,避免客户端绑定恶意数据到 domain 类上, 并持久化到数据库.
你可以使用下标操作符限制捆绑在某个给定domain类的属性:def p = Person.get(1)
p.properties['firstName','lastName'] = params
在这种情况下,只有firstName 和 lastName 属性将被捆绑.
另一种实现这个的方式是使用 domain类作为数据绑定目标,你可以使用Command Objects. 另外还有一个更加灵活bindData 方法.
The bindData 方法具有同样的数据绑定能力,但,是对于任意的对象:def p = new Person()
bindData(p, params)
当然,bindData 方法同样允许你排除某些你不想更新的参数:def p = new Person()
bindData(p, params, [exclude:'dateOfBirth'])
或只包含某些属性:def p = new Person()
bindData(p, params, [include:['firstName','lastName]])