我有一个需要在gsp重装有效的情况下运行的应用程序(不要判断我,我已经自己每天都这样做了)。该应用程序最近已从2.2.3移植到2.4.5,并且几乎完美无瑕。
现在,在 Controller 的作用下,我这样写:
render(view:red,model:pMap());
其中,“red”是 View 的路径,而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。
知道为什么会发生这种情况吗?我能解决这个烂摊子吗?
提前致谢
最佳答案
您可以在渲染调用之前检查 View 文件是否存在,例如here。如果不存在,您可以将状态码更改为404 link。
据我所知,它抛出一个NPE,因为在null映射值上org.codehaus.groovy.grails.web.metaclass.RenderDynamicMethod#renderView中调用了toString(),因为该 View 不存在。
关于grails - Grails 2.4.5和404变成500,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31113389/