Grails - 控制器链和模型消失

时间:2011-10-05 16:29:07

标签: grails parameters model controller chain

我正在尝试使用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,并且它(现在仍然)正常工作。

知道为什么模型没有正确传递给视图吗?

任何帮助都是最受欢迎的。 一切顺利,

2 个答案:

答案 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,因此无法说明它与其他版本的兼容性。希望能帮到其他人,在得到这个之前不得不四处寻找并尝试一些不同的路线。