Grails数据绑定字段排除

Grails数据绑定字段排除,grails,data-binding,Grails,Data Binding,我正在使用Grails2.5,并在请求方法中使用Grails数据绑定。 对于这种情况的一个基本例子考虑如下: 域类 class Product { String field1 String privateField } 控制器 class ProductController { def update(Product productInstance) { productInstance.save() } } 如果我将现有产品传递给控制器,如 {"id":3, "pri

我正在使用Grails2.5,并在请求方法中使用Grails数据绑定。
对于这种情况的一个基本例子考虑如下:

域类

class Product {
  String field1
  String privateField
}
控制器

class ProductController {
  def update(Product productInstance) {
     productInstance.save()
  }
}
如果我将现有产品传递给控制器,如

{"id":3, "privateField":"newValue","field1":"whatever"}
privateField
的旧值被覆盖。我想强制执行,
privateField
从不从请求绑定,并避免检查字段是否脏。
Grails中是否有实现这一点的机制


如果我必须执行脏检查,如何丢弃新值并使用旧值?

您可以强制执行绑定的值,但您需要更改方法签名以获得对流程的更多控制


您可以强制绑定哪些值,但需要更改方法签名以获得对流程的更多控制

非常确定存在“可绑定”约束。

应防止该字段自动绑定。

非常确定存在“可绑定”约束。


应防止该字段自动绑定。

只是猜测,“最终”是否有效?似乎setter不会生成,所以它不会绑定?我仍然希望能够以编程方式修改字段,我只是不想阻止绑定。只是猜测,“final”会起作用吗?似乎setter不会生成,所以它不会绑定?我仍然希望能够以编程方式修改字段,我只是不想阻止绑定。
class ProductController {
  def update() {
     def productInstance = Product.get(params.id)

     bindData(productInstance, params, [exclude: ['privateField']]
     productInstance.save()
  }
}
class Product {
  String field1
  String privateField

  static constraints = {
      privateField bindable: false
  }
}