2016-02-28 70 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() 
    } 
}