我如何从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 UrlMappings
而response.status = 404
并不是由于某种原因。 如果你想渲染一个自定义的404错误页面,而不是仅仅发回404到浏览器,这是非常有用的。
我不知道这是从什么版本开始的,但在Grails 2.2.1中,您可以这样做:
render(status: 503, text: 'Failed to do stuff.')
response.sendError
和response.setStatus
是我所知道的唯一的两种方法。 如果你static import HttpServletResponse
,那就不是那种'un-grails-like'。