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 - 控制器链和模型消失的主要内容,如果未能解决你的问题,请参考以下文章

阅读《基于区块链和用户信用度的访问控制模型 》总结

Grails 从领域模型自动生成数据库

Grails:属性空错误

Grails:在用户会话期间存储数据的最佳方法[关闭]

将其作为模型传递以在 grails 中查看时的映射问题

grails 索引页面的最佳实践