2013-07-20 15 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 –