Grails 数据绑定字段排除



我正在使用Grails 2.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中是否有一种机制来实现这一目标?

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

很确定存在"可绑定"约束。
http://grails.github.io/grails-doc/2.5.x/ref/Constraints/bindable.html

class Product {
  String field1
  String privateField
  static constraints = {
      privateField bindable: false
  }
}

应防止该字段自动绑定。

可以强制绑定哪些值,但需要更改方法签名才能更好地控制数据绑定过程。

class ProductController {
  def update() {
     def productInstance = Product.get(params.id)
     bindData(productInstance, params, [exclude: ['privateField']]
     productInstance.save()
  }
}

最新更新