2016-02-28 72 views
1

我正在使用Grails 2.5并在请求方法中使用Grails数据绑定。
对于形势的基本示例考虑以下因素: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

只是猜测,会“最终”的工作?看起来像制定者不会生成,所以它不会绑定? – billjamesdev

+0

我仍然希望能够以编程方式修改该字段,我只是不会阻止绑定。 – Tobson

回答

1

您可以强制绑定哪些值,但需要更改方法签名才能获得对data binding进程的更多控制。

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

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