Grails 1.1 Web层 - 数据绑定 - 数据绑定与安全关系

当批量更新来自请求参数的属性,你必须小心,避免客户端绑定恶意数据到 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]])