Grails - 控制器链和模型消失
Posted
技术标签:
【中文标题】Grails - 控制器链和模型消失【英文标题】:Grails - Controller chain and model disapearance 【发布时间】:2011-10-05 16:29:07 【问题描述】:我正在尝试使用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])
我无法从我的simulateResult.gsp
视图中调用$emailToNotify
或$somethingToDisplay
。
我之前已经以完全相同的方式使用过chain
,它曾经(现在仍然)正常工作。
知道为什么模型没有正确传递给视图吗?
一如既往地欢迎任何帮助。 万事如意,
【问题讨论】:
【参考方案1】:chain
仅在最终操作返回 Map
时有效,而在最终操作使用 render
调用时无效。要使您正在做的工作,您必须手动将隐式变量 chainModel
与您传递回 render
的模型合并。
【讨论】:
谢谢,您已经完成了 2 小时的跟踪变量 :) 这是在文档中的某处写的吗?我没有在那里读到这个,但也许我错过了。 我不知道有关该规则的任何具体文档。我也不记得我是在哪里第一次学的。【参考方案2】:我遇到了同样的问题,发现解决这个问题的一种方法是使用 Spring ModelAndView 对象。从第一个Controller:
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,因此无法说明它与其他版本的效果如何。希望对其他人有所帮助,在得到这个之前不得不四处挖掘并尝试一些不同的路线。
【讨论】:
以上是关于Grails - 控制器链和模型消失的主要内容,如果未能解决你的问题,请参考以下文章