grails命令对象深度数据绑定

grails命令对象深度数据绑定,grails,Grails,我有两个域对象和一个命令,看起来像 class Vendor { String phoneNumber public String toString() { """[phoneNumber: "${phoneNumber ?: ''}"]""" } } class Product { String productNumber Vendor vendor public String toString() { ""

我有两个域对象和一个命令,看起来像

class Vendor {
    String phoneNumber

    public String toString() {
        """[phoneNumber: "${phoneNumber ?: ''}"]"""
    }
}

class Product {
    String productNumber
    Vendor vendor

    public String toString() {
        """[productNumber: "${productNumber ?: ''}", vendor: "${vendor}"]"""
    }
}

class SaveProductCommand {
    Product product
}
我有一个表单,看起来像:

<g:formRemote>
    <input type="text" name="product.productNumber" value="12345" />
    <input type="text" name="product.vendor.phoneNumber" value="18005551212" />
</g:formRemote>
def save(SaveProductCommand cmd) {
    // do stuff
}
[productNumber: "12345", vendor: "null"]
当我检查产品时,我看到如下情况:

<g:formRemote>
    <input type="text" name="product.productNumber" value="12345" />
    <input type="text" name="product.vendor.phoneNumber" value="18005551212" />
</g:formRemote>
def save(SaveProductCommand cmd) {
    // do stuff
}
[productNumber: "12345", vendor: "null"]

grails能够在多个级别上进行数据绑定吗?如果是这样的话,谁能看出我做错了什么?如果没有,有人能提供解决方法吗?

是的,命令对象绑定可以使用任意深度的嵌套路径。您的应用程序中可能有打字错误或其他问题,但活页夹确实支持您所说的内容


请参阅上的示例应用程序。如果您在默认索引页上提交表单,您将看到这两个属性都已正确绑定。

仅考虑此处显示的代码,这是没有意义的。混合中肯定还有其他问题。如果查询cmd.errors和cmd.product.errors,您可能会发现一些有趣的东西。