2015-12-22 5 views
0

Я пытаюсь понять, как лучше всего работать со сложными иерархиями объектов, которые я манипулирую на основе данных о формах в Grails.комплексные обновления иерархии на основе ввода формы

Я не могу использовать объект команды, поскольку моя форма является динамической (пользователи могут добавлять любое количество записей). Мне сказали, что мы должны проанализировать параметры в контроллере и позволить службам выполнять транзакционные операции над объектами домена и тем самым уменьшать связь. Иногда это не кажется простым.

У меня есть несколько списков дочерних доменных объектов в объекте базового домена, который обновляется, что означает, что список может увеличиться или уменьшиться, что означает, что некоторые кортежи домена необходимо будет добавить/удалить, как я могу пройти эта информация от контроллера к сервису без выполнения функции с 8 параметрами? Если у вас есть какие-либо стратегии, которые вы использовали, делитесь. Я уверен, что это не редкость, но я не видел никаких обсуждений по такому вопросу.

например.

class DomainA { 
    List<DomainB> bList 
    List<DomainC> cList 
    DomainD domD 
} 

class DomainD { 
    List<DomainE> elist 
} 
+0

Учитывая ваш пример. Почему бы вам не сохранить Domain D First в качестве первого шага. Затем вы можете сохранить DomainA, так как вам понадобится его ID для работы. После сохранения domainAInstance вы сможете создавать небольшие формы ajax, которые добавляют экземпляры в bList, clist и т. Д. Используя ajax, тот факт, что вы сохраняете каждое время, станет прозрачным для пользователя. Это может также избавить вас и их от необходимости восстанавливать все, если что-то не удается, или постоянные откаты в транзакциях. –

+0

Боб. Вы можете сделать его пригодным для действительного класса домена, а также, при необходимости, поддающимся проверке. Самое главное, что он может связывать параметры, которые могут быть зарегистрированы в объектах List прямо из контроллера в службу. Если проблемы в обслуживании не сработают, и передайте bean back to view с контроллера. Взгляните на некоторые из моих плагинов. Я использовал bean для привязки колясок от контроллера к сервису – Vahid

ответ

0

Как насчет того, чтобы полагаться на ajax. Вы можете сохранить classD, а затем класс A или использовать объект команды для сохранения обоих. Затем с идентификаторами этих двух классов вы можете добавить все, что вам нужно, используя ajax.

enter image description here

Смежные вопросы