如何从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在将响应实际发送回客户端时所使用的状态。
答
response.sendError
和response.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.')
链接到IBM的文章不再起作用。 – 2015-01-15 12:25:14
@ Al-Punk固定,谢谢你的抬头。 – 2015-01-15 14:57:43