Grails 2.4.5 和 404 变成 500

Posted

技术标签:

【中文标题】Grails 2.4.5 和 404 变成 500【英文标题】:Grails 2.4.5 and the 404 becoming 500 【发布时间】:2015-09-15 18:44:52 【问题描述】:

我有这个应用程序需要在 gsp 重新加载活动的情况下运行(不要评判我,我自己已经每天都这样做了)。该应用最近从 2.2.3 移植到 2.4.5,几乎完美无缺。

现在在控制器的作用下,我写:

render(view:red,model:pMap());

其中“红色”是视图的路径,pMap 生成范围。

除了一件事,一切都很好。当“红色”路径引用缺少的资源时,我希望它会像以前的版本一样进入 404。

我得到的是一个可怕的:

NullPointerException occurred when processing request: [GET] /app/ass
Stacktrace follows:
java.lang.NullPointerException
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)

不用说处理错误的操作检测到的是 500 而不是 404。

知道为什么会发生这种情况吗?有什么办法可以解决这个烂摊子吗?

提前致谢

【问题讨论】:

【参考方案1】:

您可以在渲染调用之前检查视图文件是否存在,例如here。当它不存在时,您可以将状态码更改为 404,link。

据我所知,它会引发 NPE,因为在 org.codehaus.groovy.grails.web.metaclass.RenderDynamicMethod#renderView 中调用了一个 toString(),因为该视图不存在。

【讨论】:

看起来不像。也许这个网站有点帮助grails.github.io/grails-doc/2.4.x/guide/upgradingFrom22.html

以上是关于Grails 2.4.5 和 404 变成 500的主要内容,如果未能解决你的问题,请参考以下文章

将 Grails 部署到 AWS 错误 404

Grails 3.3.1控制台给出404

带有字节 [] 的 Grails 脚手架 404

response.sendError(404) 在 grails 中创建空页面

Grails 从 2.4.5 升级到 3.3.2:关系“xxx”不存在

Grails 资源:图像是 404,即使它存在于 WAR 中