我有一个简单的问题。我需要管理域对象上的 hasMany 集合。我以为我做得对,但它没有用。我发现了另一篇文章,但它非常过时并且不起作用(为 grails 中的一对多关系处理动态表单中的参数)
class User{
static hasMany = ['prefs': Preference]
}
class Preference{
Boolean email
Boolean site
Date dateCreated
Date lastUpdated
}
普惠制
<g:each var="t" in="${user.prefs}" status="idx">
<li>
<input type='hidden' name="prefs[${idx}].id" value="${t.id}"/>
Email: <g:checkBox name="prefs[${idx}].email" value="${t.email}" />
Site: <g:checkBox name="prefs[${idx}].site" value="${t.site}" /><
</li>
</g:each>
控制器:
log.info(user.prefs)
user.properties = params
if(!user.save()){ ... }
然后它会出错:
UserController - [首选项:3,首选项:4]
错误 2013-06-04 21:54:41,405 [http-bio-8080-exec-12] 错误错误。处理请求时发生 GrailsExceptionResolver
IndexOutOfBoundsException:[POST] /user/prefs - 参数:prefs[0].email:
id: 2
prefs[1].site: on
prefs[0].email: on
_prefs[1].site:
_prefs[1].email:
prefs[1].id: 3
_prefs[0].site:
prefs[0].site: on
prefs[0].id: 4
索引:1,大小:1。堆栈跟踪如下:
消息:索引:1,大小:1