Эффективность Grails hasMany-Relationship в представлении

Я сохраняю контакты (email, мобильный телефон, ICQ, AIM и т.д.) для таких людей:

class Person {
  static hasMany = {
    contacts: Contact
  }
}
class Contact {
  String code
  ContactType type
}
class ContactType {
  String name
}

На мой взгляд, я написал несколько шаблонов для отображения каждого контакта с полем выбора для типа контакта и текстовым полем для кода, приправленным некоторым JavaScript для добавления и удаления.

Мой вопрос: есть ли простой и элегантный способ обновить данные, похожие на personInstance.properties = params, или мне нужно прочитать все поля, удалить удаленные, обновить измененные и добавить новые?


person Jan    schedule 03.04.2010    source источник


Ответы (1)


Я изучал это некоторое время назад, но так и не смог реорганизовать наш код, который обрабатывает параметры по старинке.

Согласно http://www.grails.org/Controllers+-+Data+Binding можно сделать что-то вроде этого

def person = new Person(params['person'])
def contact = new Contact(params['contact'])
def conctactType = new ContactType(params['contactType'])

пока параметры запроса имеют правильное пространство имен

person.contact.code
person.contact.type.name

Вам все равно придется узнать, как обращаться с одним ко многим. Может кто знающий подкинет.

Редактировать:

Наткнулся на этот документ, в котором описывается, как обрабатывать один ко многим. Он не отображается на основном сайте Grails:

http://svn.codehaus. org/grails/tags/GRAILS_DOCS

def person = new Person(params['person'])
def contact = new Contact(params['contact'])
def conctactType = new ContactType(params['contactType'])
1/src/guide/6.1.6%20Data%20Binding.gdoc

person armandino    schedule 03.04.2010
comment
Спасибо, это то, что я искал. Текущую документацию по этому вопросу можно найти здесь: grails.org/doc/1.2.x/guide/ - person Jan; 04.04.2010