2011-10-05 54 views
4

我正在嘗試使用chain功能來調用其他方法並呈現合併模型。 這就是我所說的chainGrails - 控制器鏈和模型丟失

控制器:emailToNotify,方法:sendEmailConfirmation

if (someCommandObject.hasErrors()) 
       chain(controller: "creditProvider", action: "rank", model: [emailToNotify: epnc, somethingToDisplay: "Boom !!!!"]) 

這是怎麼了我的rank方法最終在我的creditProvider控制器:

控制器: creditProvider,action:rank

render (view: 'simulateResult', model: [bim : bam, boom : bimbamboom]) 

我無法通過我的simulateResult.gsp視圖調用${emailToNotify}${somethingToDisplay}

我已經以完全相同的方式使用了chain,並且它(現在仍然)正常工作。

任何想法爲什麼模型沒有正確傳遞到視圖?

任何幫助一如既往的最受歡迎。 一切順利,

回答

9

chain如果最終的操作返回Map,而不是如果最後操作使用render電話纔有效。要得到你正在做的工作,你必須手動合併隱含變量chainModel和你傳回render的模型。

+0

謝謝你,結束了2小時的跟蹤變量:) 這是寫在文檔的某處嗎? 我沒有在那裏讀過,但也許我錯過了它。 –

+1

我不知道有關該規則的任何特定文檔。我不記得我第一次學習的地方。 – schmolly159

+1

:)啊啊啊啊:) –

1

我對此有同樣的問題,發現解決此問題的一種方法是使用Spring ModelAndView對象。從firstController:

chain(controller: second, action: 'chainedMethod', model: [modelField2: '2']) 

然後在secondController:

import org.springframework.web.servlet.ModelAndView 
... 
def chainedMethod() { 
    return new ModelAndView('/other/view', [modelField1: '1']) 
} 

這工作我使用Grails 2.1.1所以不能將它與其他版本的作品有多好說話。希望能夠幫助其他人,在獲得此信息之前,不得不挖掘並嘗試幾條不同的路線。