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

时间:2009-09-15 20:18:03

标签: grails error-handling groovy http-status-code-404

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

response.sendError(HttpServletResponse.SC_NOT_FOUND)

效果非常好,但它并不像Grails那样。我知道Rails的render方法有一个状态参数,但Grails的render没有这样的功能。有什么我想念的,有什么是实现这个目标的最好方法吗?

4 个答案:

答案 0 :(得分:48)

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

response.status = 404;

我自己和have seen others do it this way也成功使用了这个。由于它只是一个setter,你也可以在设置状态后做其他事情。您最后设置的状态将是HttpServletResponse在将响应实际发送回客户端时使用的内容。

答案 1 :(得分:43)

response.sendError(404)将与Grails UrlMappings一起使用,而response.status = 404则不会出于某种原因。如果要渲染自定义404错误页面,而不是仅将404发送回浏览器,这将非常有用。

答案 2 :(得分:43)

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

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

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

答案 3 :(得分:8)

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