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

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

response.sendError(HttpServletResponse.SC_NOT_FOUND) 

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

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

 response.status = 404; 

我已经成功地使用了它,并且也看到其他人也这样做 。 既然它只是一个setter,你也可以在设置状态之后做其他的事情。 无论您最后设置哪个状态,都是HttpServletResponse在将响应实际发送回客户端时所使用的状态。

response.sendError(404)将与Grails UrlMappingsresponse.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

response.sendErrorresponse.setStatus是我所知道的唯一的两种方法。 如果你static import HttpServletResponse ,那就不是那种'un-grails-like'。