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

如何从Grails控制器返回404/50x状态代码?,grails,error-handling,groovy,http-status-code-404,Grails,Error Handling,Groovy,Http Status Code 404,我有一个控制器,需要返回404页和状态码在某些条件下。我似乎不知道如何在Grails中实现这一点。一位同事推荐了这种方法: response.sendError(HttpServletResponse.SC_NOT_FOUND) 这很好用,但不是很像Grails。我知道Rails的render方法使用status参数,但Grails的render没有这样的功能。是否有我遗漏的东西,实现这一点的最佳方法是什么?响应。sendError和响应。setStatus是我知道的唯一两种方法。如果您静态导

我有一个控制器,需要返回404页和状态码在某些条件下。我似乎不知道如何在Grails中实现这一点。一位同事推荐了这种方法:

response.sendError(HttpServletResponse.SC_NOT_FOUND)

这很好用,但不是很像Grails。我知道Rails的render方法使用status参数,但Grails的render没有这样的功能。是否有我遗漏的东西,实现这一点的最佳方法是什么?

响应。sendError
响应。setStatus
是我知道的唯一两种方法。如果您
静态导入HttpServletResponse
,那么这并不是像“ungrails”那样的问题。

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

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.')