我有一个包含以下域类的结构:
class Service{ static hasMany=[serviceRequirements:ServiceRequirement]}
当然还有一堆成员变量...... 当我尝试在控制器中设置属性时出现问题:
service.properties = params
我收到以下错误:
Executing action [update] of controller [se.hb.eme.DeveloperController] caused exception: Invalid property 'serviceRequirements[0]' of bean class [se.hb.eme.Service]: Index of out of bounds in property path 'serviceRequirements[0]'; nested exception is java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
grails.org上几乎没有关于此的文档,我真的无法弄清楚这个问题......
.gsp非常简单。 (我删除了一些字段......)
<g:form action="create">
<g:textField name="header" />
<g:textField name="serviceRequirements[0].header" />
<g:submitButton value="Create" />
答案 0 :(得分:1)
如果我理解正确,那是因为代码试图设置列表的元素0,其中没有元素,从而抛出索引超出范围的异常。
在您的域类中尝试此操作:
class Service{
List<ServiceRequirement> serviceRequirements = ListUtils.lazyList(new ArrayList(), {new ServiceRequirement()} as org.apache.commons.collections.Factory)
static hasMany = [serviceRequirements:ServiceRequirement]
}