5

我正在尝试使用该chain功能来调用其他方法并渲染合并模型。这就是我所说的chain

控制器:emailToNotify,方法:sendEmailConfirmation

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

这就是我的rank方法在我的creditProvider控制器中的最终结果:

控制器:creditProvider,动作:rank

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

我没有设法打电话${emailToNotify}${somethingToDisplay}从我的simulateResult.gsp角度来看。

我之前已经chain以完全相同的方式使用过,它曾经(现在仍然)正常工作。

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

一如既往地欢迎任何帮助。祝一切顺利,

4

2 回答 2

11

chain仅当最终操作返回 aMap而不是最终操作使用render调用时才有效。要使您正在做的工作,您必须手动将隐式变量chainModel与您传递回的模型合并到render.

于 2011-10-05T16:37:39.853 回答
1

我遇到了同样的问题,发现解决这个问题的一种方法是使用 Spring ModelAndView 对象。从第一个控制器:

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

然后在第二个Controller中:

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

这对我使用 Grails 2.1.1 有效,因此无法说明它与其他版本的配合情况如何。希望对其他人有所帮助,在得到这个之前不得不四处挖掘并尝试一些不同的路线。

于 2013-03-05T19:35:38.420 回答