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的主要内容,如果未能解决你的问题,请参考以下文章
response.sendError(404) 在 grails 中创建空页面