在Grails控制器操作中处理无效ID的最佳方法是什么?
当MyDomainClass.get(params['i'])
回报我的控制器操作空我希望用户看到我的自定义"未找到"页面,并要返回一个404 HTTP响应代码-我想不出这样做最彻底的方法.
谢谢.
小智 8
我在我的控制器中使用了以下内容,其中'notFound'是一个自定义的404页面:
def show = {
def referenceData = ReferenceData.get( params.id )
if (referenceData)
{ return [ referenceData : referenceData ] }
else
{ redirect(uri:'/notFound') }
}
Run Code Online (Sandbox Code Playgroud)
我还在UrlMapping.groovy中映射了自定义错误页面,例如
static mappings = {
"403"(controller: "errors", action: "forbidden")
"404"(controller: "errors", action: "notFound")
"500"(controller: "errors", action: "serverError")
}
Run Code Online (Sandbox Code Playgroud)
要么
static mappings = {
"403"(view: "/errors/forbidden")
"404"(view: "/errors/notFound")
"500"(view: "/errors/serverError")
}
Run Code Online (Sandbox Code Playgroud)
编辑 - 对于误读你的问题,我深表歉意。render 方法需要一个状态代码。所以在控制器中,如果没有找到任何内容,请尝试
render status: 404
Run Code Online (Sandbox Code Playgroud)
或者
render view: you_not_found_view
Run Code Online (Sandbox Code Playgroud)
或两者(在一次渲染调用中)。