我正在尝试使用chain
功能调用其他方法并渲染合并模型。
这就是我调用chain
:
控制器: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])
我无法从${emailToNotify}
视图中致电${somethingToDisplay}
或simulateResult.gsp
。
之前我已经以完全相同的方式使用过chain
,并且它(现在仍然)正常工作。
知道为什么模型没有正确传递给视图吗?
任何帮助都是最受欢迎的。 一切顺利,
答案 0 :(得分:11)
chain
仅在最终操作返回Map
时有效,而在最终操作使用render
调用时则无效。要获得您正在做的工作,您必须手动将隐式变量chainModel
与您传回render
的模型合并。
答案 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,因此无法说明它与其他版本的兼容性。希望能帮到其他人,在得到这个之前不得不四处寻找并尝试一些不同的路线。