我正在使用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中是否有机制来实现这一目标?
如果我必须进行脏检查,我该如何丢弃新值并使用旧值?
答案 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()
}
}