首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >自动绑定Grails一对多的关系

自动绑定Grails一对多的关系
EN

Stack Overflow用户
提问于 2013-09-25 18:06:18
回答 2查看 1.7K关注 0票数 3

在Grails中,我很难自动绑定一对多的关系,而不需要在控制器上进行一些黑客攻击。我知道,在Grails中,一对多的关系是一个无序的集合,并以某种方式影响绑定。

当我保存此表单时,数据有时会正确保存,有时则不会。如果一位作家有3-4本书,那么它似乎就不那么经常起作用了。

在这个例子中,我尝试删除所有无关的代码来说明这个问题。

型号:

代码语言:javascript
复制
class Author {
    String name
    static hasMany = [ books:Book ]
}

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

查看:

代码语言:javascript
复制
<g:form method="post" class="form-horizontal">
    <g:hiddenField name="id" value="${authorInstance?.id}" />
    <g:hiddenField name="version" value="${authorInstance?.version}" />
    <g:textField name='name' value='${authorInstance?.name}'/>
    <g:each var="book" in="${authorInstance.books}" status="i">
        <g:hiddenField name='book[${i}].id' value='${book.id}'/>
        <g:textField name='book[${i}].title' value='${book.title}'/>
    </g:each>
    <g:actionSubmit action="update" value="Update" />
</g:form>

主计长:

代码语言:javascript
复制
def update(Long id, Long version) {
    def author = Author.get(id)

    // removed "Not Found" and "Version" validation for this example

    author.properties = params

    if (!author.save(flush: true)) {
        render(view: "edit", model: [author: author])
        return
    }

    flash.message = "Success"
    redirect(action: "list"
}

我如何构造我的模型和视图,使我可以保持控制器相对不动?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-09-30 18:31:39

我发现最容易做的事情是强迫“图书”成为一个列表,所以它是有序的。

代码语言:javascript
复制
class Author {
    List books <------- Added (by default this one-to-many relationship is a Set)
    String name
    static hasMany = [ books:Book ]
}

然后视图可以保持不变,一切都应该按预期工作。

票数 0
EN

Stack Overflow用户

发布于 2013-09-27 07:02:11

我一直在努力解决类似的问题,提交一对多的表格。我在我的应用程序中解决了这个问题,我把它转换成了一个包。

因此,除非您特别需要将books设置为一个集合,否则请尝试如下:

代码语言:javascript
复制
class Author {
    String name
    Collection<Book> books
    static hasMany = [ books:Book ]
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19012112

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档