Grails域obj动作参数和关联数据绑定

时间:2013-12-06 01:54:29

标签: grails data-binding controller gorm

我知道Grails v2.3 introduced some changes数据绑定的工作方式,但是当我将域obj作为action参数时,我正在努力弄清楚如何使自动关联绑定工作。例如,有几个简单的域对象:

class Author {
    String name
    List books
    static hasMany = [books: Book]
}

class Book {
    String name
    static belongsTo = [author: Author]
}

和控制器操作:

def doSomething(Author a) {
    // only simple properties appear to be bound at this point
}

如果传入的param obj为[id:4, name:Stephen King],则将加载ID为4的作者obj,并将名称设置为“Stephen King”。但是,如果我尝试设置一个书籍参考,生成一个param obj,如下所示:[id:4, name:Stephen King, books[0].id:21, books[0]:[id:21]],只会绑定名称更改;书籍协会保持不变。 (同样值得注意的是a.hasErrors() == false。)

但是,如果我将控制器操作调整为:

def doSomething(Author a) {
    a.properties = params
    // now the books association is bound
}

数据绑定按预期工作......但这种方法违背了使用动作参数的目的。

我做错了什么?

0 个答案:

没有答案