У меня есть следующие классы Grails домена:Обновление HasMany связь в Grails контроллера
A {
belongsTo = [b: B]
}
B {
hasMany = [aClasses: A]
}
В представлении GSP У меня есть форма, где пользователь может выбрать количество экземпляров A, чтобы соединить их с экземпляром B. Когда пользователь отправляет форму контроллер, который обрабатывает форму получает что-то вроде этого:
params: [aClasses: [123,124]]
Пользователь может удалили ранее добавили aClasses из B, так что я пытался очистить aClasses от B первой, а затем выполнить AddTo, но я получите java.util.ConcurrentModificationException
.
Вот что делать в контроллере действий:
def update() {
B b = B.get(params.id)
b.properties = params
b.aClasses.clear()
def newAs = params.aClassIds ? [] + params.aClasses : []
newAs.each {
A a = A.get(it)
b.addToAClasses(a)
}
b.save(flush: true)
}
Есть ли способ, чтобы сделать эту работу?
Он работает в контроллере – confile