Привязка данных Grails с дочерними элементами приводит к выходу индекса за пределы - PullRequest
1 голос
/ 20 декабря 2011

У меня есть структура со следующими классами домена:

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 Ответ

1 голос
/ 23 января 2012

Если я правильно понимаю, это потому, что код пытается установить элемент 0 списка, в котором нет элементов, таким образом выбрасывая исключение индекса за пределами границ.

Попробуйте это в классе вашего домена:

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