Я новичок в Grails и не смог найти ответ, как я могу передать модель между контроллерами.
У меня такая ситуация, что есть представления «Потенциальный клиент» и «Запрос клиента».
Возможно, что пользователь захочет создать запрос клиента из информации о потенциальном клиенте.
Я думал о заполнении объектов модели внутри действия преобразования 100 * * PotentialClientController и chain это к действию создания ClientRequestController .Было бы хорошо, если бы у пользователя была возможность редактировать данные перед сохранением, и, возможно, он решит не сохранять их.Поэтому я не хочу сохранять заполненный ClientRequest экземпляр внутри transform action, я хочу передать его в create view другого контроллера.И я не хочу обрабатывать params внутри create action.Конечно, я могу передавать идентификаторы уже существующих объектов и использовать их внутри действия create , но для меня было бы проще передать модель.
Как правильно это сделать?
Ниже приведен пример того, что я пытаюсь сделать: Преобразовать действие контроллера потенциального клиента:
def transform = {
def requestor = User.getByUsername(principal.username)
def potentialClientInstance = PotentialClient.get( params.id )
boolean hasEnoughtRights = checkRights()
if(!hasEnoughtRights) {
redirect(controller: 'login', action: 'denied')
}
ClientRequest clientRequestInstance = new ClientRequest()
ContactPerson contactPersonInstance = ContactPerson.get(potentialClientInstance?.contactPerson?.id)
Contact mobilePhoneContactInstance
Contact workPhoneContactInstance
Contact homePhoneContactInstance
Contact organizationPhoneContactInstance
Contact emailContactInstance
...........................
clientRequestInstance?.ownedBroker = requestor
clientRequestInstance?.organization = Organization.get(potentialClientInstance?.organization?.id)
clientRequestInstance?.brand = new Brand(name: clientRequestInstance?.organization?.getBrandsString())
clientRequestInstance?.estateType = EstateTypeDic.get(potentialClientInstance?.estateType?.id)
clientRequestInstance?.footageFrom = potentialClientInstance?.footageFrom
clientRequestInstance?.footageTo = potentialClientInstance?.footageTo
clientRequestInstance?.priceFrom = potentialClientInstance?.priceFrom
clientRequestInstance?.priceTo = potentialClientInstance?.priceTo
clientRequestInstance?.currency = CurrencyDic.get(potentialClientInstance?.currency?.id)
clientRequestInstance?.requestComment = Comment.get(potentialClientInstance?.comment?.id)
clientRequestInstance?.comments?.setComments(potentialClientInstance?.comments)
clientRequestInstance?.district = District.get(potentialClientInstance?.address?.district)
clientRequestInstance?.addedBy = requestor
clientRequestInstance?.modifiedBy = requestor
chain (controller: 'clientRequest', action: 'create', model: [clientRequestInstance:clientRequestInstance, contactPersonInstance:contactPersonInstance, mobilePhoneContactInstance:mobilePhoneContactInstance, workPhoneContactInstance:workPhoneContactInstance, homePhoneContactInstance:homePhoneContactInstance, organizationPhoneContactInstance:organizationPhoneContactInstance, emailContactInstance:emailContactInstance,])
}
Создать действие контроллера клиентских запросов
def create = {
def clientRequestInstance = new ClientRequest()
clientRequestInstance.properties = params
return ['clientRequestInstance':clientRequestInstance]
}