1

请参阅我在 Grails 用户邮件列表中的帖子。本质上,每隔几个请求后,我就会在 Grails 2.x 中收到错误“提交响应后无法转发”。所有类型的 URL、控制器、GSP、CSS 文件、JS 文件甚至图像文件都会发生这种情况。我已经在 Windows XP 32 位、Windows 7 32 位和 Centos 64 位上尝试了 Grails 2.0.0 和 Grails 2.0.1 以及 Tomcat 6.0.35 和 Tomcat 7.0.25。所有这些组合都会出现错误。

正如我在帖子中提到的,我们的代码中没有 response.redirect 或 response.forward 语句。这对我们的生产应用程序造成了严重的问题,因此需要帮助来确定可以查看的其他内容以找出问题的根源。

4

2 回答 2

1

这已经解决了。在应用程序的其中一个控制器中,响应输出流被直接写入,但在操作结束后没有显式关闭。似乎 Tomcat 和 Jetty 回收响应对象。当之前没有关闭其输出流的响应对象被回收以用于将来的请求并对其执行重定向时,重定向将失败。

代码已更改,错误现已消失。吸取的教训是,每当发生此类错误时,扫描整个代码库以直接访问响应输出流,并在现有控制器方法之前负责任地关闭输出流。

于 2012-04-02T14:39:19.480 回答
0

您应该自己创建一个新的 grails 应用程序并移动控制器、域等,而不是 grails 更新。

当你这样做时,还要确保查看 grails 的配置文件。

还要看看你有什么插件。

此外,在移动文件时,如果可能,请不时尝试一下该应用程序,也许您可​​以检测到何时出现错误。首先在您最基本的控制器中尝试它,然后查看错误是否存在。

祝你好运。

于 2012-03-07T14:24:24.083 回答