2013-07-20 14 views
3

我很抱歉如果我在這裏丟失了一些非常明顯的東西,但我一直在用這個問題拉我的頭髮。Grails將版本添加到命令對象導致id和版本不受限制params

我有一個命令對象:

class MyCommand { 
    Long id 
    String value 
} 

我綁定到這個在我的控制器:

public update(MyCommand myCmd) { 


} 

一切都是在這種情況下罰款。現在我想要添加的版本場,這是在請求參數傳遞給命令對象:

class MyCommand { 
    Long id 
    Long version 
    String value 
} 

但是現在,當綁定發生id和版本總是空,即使它們存在於params對象。

我懷疑可能會有一些與grails處理樂觀鎖定有關的id/version屬性的特殊處理(因爲這最終是爲什麼我這樣做),但問題出現在獨立於任何域的命令對象上目的。

我很困惑爲什麼這不起作用。在命令對象上存在版本時是否存在特殊情況?

回答

8

看來這是由設計每傑夫·布朗jira

數據綁定明確地避免綁定ID或版本[如果]他們都 存在,並通過設計來實現的。這是與數據綁定相關的潛在 安全問題的屏蔽,因爲它與域 類有關。命令對象的簡單解決方法是使用「idValue」和「versionValue」或 以外的任何名稱來指定 屬性,而不是「id」和「version」。

+1

你是超級巨星!謝謝。我甚至搜查了JIRA,但顯然我沒有再找到任何東西...... thx –