与子进行Grails数据绑定会导致索引超出范围

时间:2011-12-20 13:20:21

标签: java grails groovy gorm

我有一个包含以下域类的结构:

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" />

1 个答案:

答案 0 :(得分:1)

如果我理解正确,那是因为代码试图设置列表的元素0,其中没有元素,从而抛出索引超出范围的异常。

在您的域类中尝试此操作:

class Service{
  List<ServiceRequirement> serviceRequirements = ListUtils.lazyList(new ArrayList(), {new ServiceRequirement()} as org.apache.commons.collections.Factory)
  static hasMany = [serviceRequirements:ServiceRequirement]
}