如何从Grails控制器返回404/50x状态码?

问题描述:

我有一个控制器需要在特定条件下返回404页面和状态码。我似乎无法知道如何在Grails中做到这一点。一位同事推荐这种方法:如何从Grails控制器返回404/50x状态码?

response.sendError(HttpServletResponse.SC_NOT_FOUND) 

它工作得很好,但它不像Grails那样。我知道Rails的渲染方法有一个状态参数,但Grails的渲染没有这样的功能。有什么我错过了,什么是完成这个最好的方法?

用自己的语句设置响应状态就足够了。它看起来并不太难看,是非常简单的:

response.status = 404; 

我已经成功地使用这个自己和have seen others do it this way了。既然它只是一个setter,你也可以在设置状态后做其他的事情。无论您最后设置哪种状态,都是HttpServletResponse在将响应实际发送回客户端时所使用的状态。

+0

链接到IBM的文章不再起作用。 – 2015-01-15 12:25:14

+1

@ Al-Punk固定,谢谢你的抬头。 – 2015-01-15 14:57:43

response.sendErrorresponse.setStatus是我所知道的唯一两种方式。如果你static import HttpServletResponse,那么它不是'非克拉尔斯'。

response.sendError(404)将与Grails UrlMappings一起使用,而response.status = 404不是由于某种原因。如果你想渲染一个自定义的404错误页面,而不是只发送404回浏览器,这很有用。

我不知道是什么版本的开始,但在Grails的2.2.1,你可以这样做:

render(status: 503, text: 'Failed to do stuff.') 

http://grails.org/doc/2.2.1/ref/Controllers/render.html