Grails 2.4.5和404变为500

时间:2015-06-29 10:29:58

标签: grails nullpointerexception

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

现在在控制器的操作中,我写道:

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

其中'red'是视图的路径,pMap生成范围。

除了一件事以外,这一切都很好。当'red'路径引用缺少的资源时,我希望它会像之前版本中那样进入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 个答案:

答案 0 :(得分:1)

如果视图文件存在,您可以在渲染调用之前进行检查,例如here。如果不存在,您可以将状态代码更改为404,link

据我所知它会抛出一个NPE,因为orgtring()在org.codehaus.groovy.grails.web.metaclass.RenderDynamicMethod#renderView中调用空地图值,因为视图没有存在。