Grails数据绑定字段排除

时间:2016-02-28 18:28:00

标签: grails data-binding

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

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

2 个答案:

答案 0 :(得分:4)

非常确定存在“可绑定”约束 http://grails.github.io/grails-doc/2.5.x/ref/Constraints/bindable.html

class Product {
  String field1
  String privateField

  static constraints = {
      privateField bindable: false
  }
}

应该保持该字段自动绑定。

答案 1 :(得分:1)

您可以强制绑定哪些值,但您需要更改方法签名以更好地控制data binding进程。

class ProductController {
  def update() {
     def productInstance = Product.get(params.id)

     bindData(productInstance, params, [exclude: ['privateField']]
     productInstance.save()
  }
}