3

如果我在这里遗漏了一些非常明显的东西,我深表歉意,但我一直在努力解决这个问题。

我有一个命令对象:

class MyCommand {
    Long id
    String value
}

我在我的控制器中绑定到这个:

public update(MyCommand myCmd) {


}

在这种情况下一切都很好。现在我正在尝试添加版本字段,该字段在请求参数中传递给命令对象:

class MyCommand {
    Long id
    Long version
    String value
}

但是,现在当绑定发生时,id 和 version 始终为 null,即使它们存在于 params 对象中。

我怀疑可能对 id / version 属性进行了一些特殊处理,这些处理与 grails 如何处理乐观锁定有关(因为这最终是我这样做的原因),但问题存在于命令对象上,与任何域对象无关。

我很困惑为什么这不起作用。当命令对象上存在版本时,是否有一些特殊情况?

4

1 回答 1

8

似乎这是 Jeff Brown jira的设计

数据绑定显式地避免绑定 id 或版本 [如果] 它们都存在并且按设计这样做。这是对与域类相关的数据绑定相关的潜在安全问题的保护。命令对象的一个​​简单解决方法是使用“idValue”和“versionValue”之类的名称或“id”和“version”以外的任何名称来命名属性。

于 2013-07-20T20:52:51.537 回答