Grails:为了在URL映射中实现错误处理,需要在控制器中设置什么?

Grails:为了在URL映射中实现错误处理,需要在控制器中设置什么?,grails,grails-controller,Grails,Grails Controller,使用Grails2.3.9 在控制器中,我试图使请求通过URL映射中声明的错误处理。我读过这本书,但我还是不明白这是怎么回事 根据文档示例: static mappings = { "403"(controller: "errors", action: "forbidden") "404"(controller: "errors", action: "notFound") "500"(controller: "errors", action: "serverError") }

使用Grails2.3.9

在控制器中,我试图使请求通过URL映射中声明的错误处理。我读过这本书,但我还是不明白这是怎么回事

根据文档示例:

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\u禁止
渲染状态:403
不工作

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

"403"(controller: "errors", action: "forbidden", exception: ForbiddenException)
但是,我想,通过另一个控制器到达错误控制器也应该为每种情况抛出一个异常,否?

试试这个

response.sendError 403

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

如何:response.sendError403@vahid:谢谢。然而,这给了我一个404(无论错误代码是什么)和一个默认响应(未在url映射中声明)。response.status=403 render“some response”应该可以工作
response.sendError 403
工作得很好。确保您已经在URL映射中创建了控制器和操作,并从操作中呈现了一些内容。感谢vahid和user1690588再次确认这是正确的方法。当我尝试“sendError”时,我留下了异常。你们中有人想把这个作为答案吗?