我有两个控制器动作,一个接一个,我使用grails flash scope将我的对象数据“传递”到第二个控制器动作(在同一个控制器中)。
这在使用包含的标准H2数据库的开发模式下工作正常,但是在我部署到mysql数据库的生产模式下不起作用。我不认为这会产生影响(数据库),所以我有点困惑。当我在目标/生产机器上尝试完全相同的事情时,flash变量在第二个控制器操作中变为null。我能够看到从动作1到动作2的流程,所以那里没有神秘感。你知道什么是错的吗?我正在运行grails 2.2.4。
答案 0 :(得分:0)
我遇到了这样的问题。我有一个heroku插件,它依赖于一些不推荐使用的数据库会话插件。如果我查看终端窗口并调查日志,我会很容易找到这个插件。我还使用grails dependency-report
命令来跟踪哪个插件在破坏的插件中调用。
我删除了heroku插件,现在处于生产模式,我的flash消息正在显示。
这表明闪存范围以某种方式连接到持久层。因为当flash消息出现ERROR databasesession.GormPersisterService - org.codehaus.groovy.grails.web.servlet.GrailsFlashScope Message: org.codehaus.groovy.grails.web.servlet.GrailsFlashScope
和巨大的堆栈跟踪时,我在终端中看到了这样的错误。
我所了解到的默认情况下,闪存消息也在生产模式下工作。但错误可以制造这种情况。还有休眠错误。所以,尽量消除错误。它们可能是由插件引起的。也许是一些不兼容的插件。有些插件适用于hibernate4,但不适用于hobernate3,反之亦然。