我很難在Grails中自動綁定一對多關係,而無需在控制器中使用一些hack。我明白,Grails中的一對多關係是一個無序的集合,它以某種方式影響綁定。自動綁定Grails一對多關係
當我保存此表格時,有時數據會正確保存,有時卻不會。如果一個作者有3-4本書,它似乎不太經常。
在這個例子中,我試圖刪除所有不相關的代碼來說明問題。
型號:
class Author {
String name
static hasMany = [ books:Book ]
}
class Book {
String title
static belongsTo = [ author:Author ]
}
查看:
<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>
控制器:
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"
}
我怎樣組織我的模型和視圖這樣我就可以離開控制器相對不變?
感謝您的評論,它幫助我找到了正確的解決方案。 – arcdegree