【问题标题】:How can I return a 404/50x status code from a Grails Controller?如何从 Grails 控制器返回 404/50x 状态代码?
【发布时间】:2010-11-28 14:24:47
【问题描述】:

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

response.sendError(HttpServletResponse.SC_NOT_FOUND)

它工作得非常好,但它不是很像 Grails。我知道 Rails 的渲染方法带有一个状态参数,但 Grails 的渲染没有这样的功能。有什么我遗漏的吗,完成此任务的最佳方法是什么?

【问题讨论】:

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


    【解决方案1】:

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

    response.status = 404;
    

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

    【讨论】:

      【解决方案2】:

      我不知道这是从哪个版本开始的,但在 Grails 2.2.1 中你可以这样做:

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

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

      【讨论】:

        【解决方案3】:

        response.sendError(404) 将与 Grails UrlMappings 一起使用,而 response.status = 404 由于某种原因不能。如果您想呈现自定义 404 错误页面,而不是仅仅将 404 发送回浏览器,这将非常有用。

        【讨论】:

          【解决方案4】:

          response.sendErrorresponse.setStatus 是我所知道的仅有的两种方式。如果你是static import HttpServletResponse,那么它就不是那种'un-grails-like'。

          【讨论】:

            猜你喜欢
            • 2016-09-16
            • 1970-01-01
            • 2011-07-01
            • 2022-02-09
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多