【发布时间】:2012-01-25 01:29:22
【问题描述】:
我是 grails 新手,无法找到如何在控制器之间传递模型的答案。
我有这样的情况,有潜在客户视图和客户请求视图。
用户可能希望根据潜在客户信息创建客户请求。
我考虑填充模型对象包括PotentialClientController 的transorm 动作并将其链 到ClientRequestController 的创建动作。如果用户能够在保存之前编辑数据,那将是一件好事,并且他可能会决定不保存它。所以我不想在 transform 动作中保存填充的 ClientRequest 实例,我想将它传递给另一个控制器的 create 视图。而且我不想在 create 操作中处理 params。当然,我可以传递已经存在的对象的 id 并在 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]
}
【问题讨论】:
-
我想我知道原因,这是由于在 create action 中创建了新对象 :) def clientRequestInstance = new ClientRequest() 但我仍然无法通过我的模型...
标签: grails view model controller