【问题标题】:Grails "respond" renders the wrong view when launched from .war file从 .war 文件启动时,Grails “响应”会呈现错误的视图
【发布时间】:2013-10-20 10:18:14
【问题描述】:

Grails 应用程序有大量使用新的 RESTful “响应”功能自动生成(来自标准 Grails 2.3.0 脚手架)代码。例如,索引方法通常如下所示:

def index(Integer max) {
    params.max = Math.min(max ?: 10, 100)
    respond Alpha.list(params), model:[alphaInstanceCount: Alpha.count()]
}

当应用程序作为“grails run-app”运行时,这完全可以正常工作,但是当应用程序被打包为 .war 并在非嵌入式 servlet 容器中以这种方式启动时会失败。

它适用于使用的第一个控制器/视图组合,但对于后续的组合使用第一个渲染视图的视图文件夹。例如,如果我们先尝试/alpha/index,然后再尝试/beta/index,那么/alpha/index 将正常工作,但/beta/index 将使用/alpha/index.gsp 进行渲染(而不是预期的/beta/index.gsp)。

但是,如果我将方法更改为:

def index(Integer max) {
    params.max = Math.min(max ?: 10, 100)
    render(view: 'index', model:[alphaInstanceList: Alpha.list(params), alphaInstanceCount: Alpha.count()])
}

那么它在两个部署选项中都可以正常工作。

我在一些 .gsp-s 中添加了一些调试代码以输出 ${this.getGroovyPageFileName()}${controllerName}${actionName}

这表明虽然控制器和操作名称始终是预期名称,但在第一个视图之后呈现的视图上使用的视图仍然是第一个视图上使用的视图。

例如,/alpha/index 的初始调用的控制器为 alpha,操作为 index,视图为 /WEB-INF/grails-app/views/alpha/index.gsp,但是后续调用 of /beta/index 的控制器为beta,查看为index,但查看为/WEB-INF/grails-app/views/alpha/index.gsp请注意此处错误的“alpha”)。对 alpha 的后续调用仍然正常。

如果我们从 beta 开始,然后转到 alpha,情况就会相反(beta 很好,alpha 坏了)。

我尝试在 JPDA 下运行它,但是当我的 IDE 似乎正在连接时,它实际上并没有遇到任何断点(可能是不相关的问题)。

我正在使用 Grails 2.3.0、JDK 1.6 和 Tomcat7。

我在日志中没有看到任何不好的地方。

任何想法可能是什么问题,或者甚至只是如何进行调试?

http://goo.gl/aFKYYb

http://goo.gl/aDP6Lx

【问题讨论】:

  • 我看到了完全相同的行为。我认为这是一个 Heroku 问题,但看起来它可能是一般的 Grails。感谢您将调用“响应”转换为“渲染”

标签: grails model-view-controller


【解决方案1】:

可能的 Grails 缺陷(尽管它们无法重现):

http://jira.grails.org/browse/GRAILS-10614

我做了一个“安装模板”并正在修改脚手架模板作为解决方法。

编辑 - 是的,已确认;我忘记更新此响应,但升级到 2.3.1 解决了问题,根据链接的缺陷。

【讨论】:

    【解决方案2】:

    升级到 Grails 2.3.1 为我解决了这个问题。 (阅读您发布的缺陷为我指明了正确的方向 - 谢谢。)

    请注意,您还必须将 hibernate 插件升级到版本 3.6.10.2,否则您将收到类似于“类 [] 上的方法已在 Grails 应用程序之外使用”的错误消息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-28
      • 1970-01-01
      • 1970-01-01
      • 2019-09-26
      • 1970-01-01
      相关资源
      最近更新 更多