Я пытаюсь понять, как лучше всего работать со сложными иерархиями объектов, которые я манипулирую на основе данных о формах в Grails.комплексные обновления иерархии на основе ввода формы
Я не могу использовать объект команды, поскольку моя форма является динамической (пользователи могут добавлять любое количество записей). Мне сказали, что мы должны проанализировать параметры в контроллере и позволить службам выполнять транзакционные операции над объектами домена и тем самым уменьшать связь. Иногда это не кажется простым.
У меня есть несколько списков дочерних доменных объектов в объекте базового домена, который обновляется, что означает, что список может увеличиться или уменьшиться, что означает, что некоторые кортежи домена необходимо будет добавить/удалить, как я могу пройти эта информация от контроллера к сервису без выполнения функции с 8 параметрами? Если у вас есть какие-либо стратегии, которые вы использовали, делитесь. Я уверен, что это не редкость, но я не видел никаких обсуждений по такому вопросу.
например.
class DomainA {
List<DomainB> bList
List<DomainC> cList
DomainD domD
}
class DomainD {
List<DomainE> elist
}
Учитывая ваш пример. Почему бы вам не сохранить Domain D First в качестве первого шага. Затем вы можете сохранить DomainA, так как вам понадобится его ID для работы. После сохранения domainAInstance вы сможете создавать небольшие формы ajax, которые добавляют экземпляры в bList, clist и т. Д. Используя ajax, тот факт, что вы сохраняете каждое время, станет прозрачным для пользователя. Это может также избавить вас и их от необходимости восстанавливать все, если что-то не удается, или постоянные откаты в транзакциях. –
Боб. Вы можете сделать его пригодным для действительного класса домена, а также, при необходимости, поддающимся проверке. Самое главное, что он может связывать параметры, которые могут быть зарегистрированы в объектах List прямо из контроллера в службу. Если проблемы в обслуживании не сработают, и передайте bean back to view с контроллера. Взгляните на некоторые из моих плагинов. Я использовал bean для привязки колясок от контроллера к сервису – Vahid