【问题标题】:grails: flash scope working in development but not in productiongrails:闪存范围在开发中工作但不在生产中
【发布时间】:2013-09-08 19:26:02
【问题描述】:

我有两个控制器动作,一个接一个,我使用 grails flash 范围将我的对象数据“传递”到第二个控制器动作(在同一个控制器中)。

这在使用包含的标准 H2 数据库的开发模式下工作正常,但在我部署到 mysql 数据库的生产模式下不起作用。我不认为这会有所作为(数据库),所以我有点困惑。当我在目标/生产机器上尝试完全相同的事情时,flash 变量在第二个控制器操作中为空。我能够看到从动作 1 到动作 2 的流程,所以这并不神秘。你知道出了什么问题吗?我正在运行 grails 2.2.4。

【问题讨论】:

  • 数据库类型不应影响这一点。我建议使用浏览器的开发工具检查与开发模式相比是否在 prod 中发生了额外的重定向,因为这会清除 flash。或者,它可能与缓存有关 - 如果操作 1 发布到操作 2 并且 2 重定向回 1,则浏览器可能会从其缓存中重新加载操作 1 的页面,而不是从服务器重新请求它。
  • 你如何“传递”你的对象数据?
  • 嗨!我也有同样的问题。如果我运行 grails prod run-app 则也不会出现 flash 消息。问题解决了吗?

标签: hibernate grails grails-orm


【解决方案1】:

我遇到了这样的问题。我有一个 heroku 插件,它依赖于一些数据库会话插件,其中包含一些已弃用的内容。如果我查看终端窗口并调查日志,我会很容易找到这个插件。我还使用grails dependency-reportcommand 来跟踪哪个插件调用了损坏的插件。

我删除了 heroku 插件,现在在生产模式下我的 flash 消息正在显示。

这表明闪存范围以某种方式连接到持久层。因为当闪存消息应该出现ERROR databasesession.GormPersisterService - org.codehaus.groovy.grails.web.servlet.GrailsFlashScope Message: org.codehaus.groovy.grails.web.servlet.GrailsFlashScope 和一个巨大的堆栈跟踪时,我在终端中看到了这样的错误。

我了解到,默认情况下,Flash 消息也在 prod 模式下工作。但是错误可以阻止这一点。还有休眠错误。所以,尽量消除错误。它们可能是由插件引起的。也许是一些不兼容的插件。有些插件适用于 hibernate4,但不适用于 hobernate3,反之亦然。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-20
    • 2011-10-29
    • 2015-08-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多