Grails:在控制器中设置啥以达到 URL 映射中的错误处理?

Posted

技术标签:

【中文标题】Grails:在控制器中设置啥以达到 URL 映射中的错误处理?【英文标题】:Grails: What is to set in the controller in order to reach the error handling in the URL mapping?Grails:在控制器中设置什么以达到 URL 映射中的错误处理? 【发布时间】:2014-07-29 20:25:30 【问题描述】:

使用 Grails 2.3.9

在控制器中,我试图让请求通过 URL 映射中声明的错误处理。我已经阅读了docs,但我仍然不明白它是如何工作的。

来自文档的示例:

static mappings = 
   "403"(controller: "errors", action: "forbidden")
   "404"(controller: "errors", action: "notFound")
   "500"(controller: "errors", action: "serverError")

例如在控制器中:

def update() 
    // do some tests
    if(forbidden) 
        // Go to 403
        //response.status = response.SC_FORBIDDEN
        render status: 403 
        return
    
    // deal with normal case

我必须在控制器中做什么才能进入 403 操作?执行response.status = response.SC_FORBIDDENrender status: 403 不起作用。

我能够通过抛出自定义异常 ForbiddenException 来实现通过映射 403,而 url 映射将包含:

"403"(controller: "errors", action: "forbidden", exception: ForbiddenException)

但是,我想,通过另一个控制器到达错误控制器也应该为每种情况抛出一个异常,不是吗?

【问题讨论】:

怎么样:response.sendError 403 @vahid:谢谢。然而,这给了我一个 404(无论错误代码是什么)和一个默认响应(未在 url 映射中声明)。 response.status = 403 渲染“一些响应”应该可以工作***.com/questions/1429388/… response.sendError 403 完美运行。确保您已在 URL 映射中创建了控制器和操作,并从操作中呈现了某些内容。 感谢 vahid 和 user1690588 再次确认这是正确的方法。当我尝试“sendError”时,我留下了异常。你们中的任何人都想发布这个作为答案吗? 【参考方案1】:

试试这个

response.sendError 403

并确保您已在 URL 映射中创建了控制器和操作,并从操作中呈现了某些内容。

【讨论】:

以上是关于Grails:在控制器中设置啥以达到 URL 映射中的错误处理?的主要内容,如果未能解决你的问题,请参考以下文章

Grails:相同的URL映射到不同HTTP方法的不同操作

GraphQL:我需要在我的项目中设置啥?

在excel表格中设置啥公式能按类别自动求和

请问在java中设置啥样的类型 才能在SQL中生成decimal类型的字段

eclipse中ctrl+H,查找字符串不好用,查不出来东西,是需要在eclipse中设置啥么?

恢复 Grails url 映射