如果我发出常规请求,我可以在 UrlMappings.groovy 中定义对错误和异常的处理,如下例所示:
"403"(controller: 'error', action: 'index', params:['code':'403'])
"404"(controller: 'error', action: 'index', params:['code':'404'])
"500"(controller: 'error', action: 'index', params:['code':'500'])
"500"(controller: 'home', action: 'noPrivileges', exception: IllegalOperationException)
然后我可以处理特定控制器中的错误并呈现我选择的视图,例如
class ErrorController {
def index = {
render view: "/errors/myErrorPage", model: [code: params.code]
}
}
这完美地工作,每当服务器上出现错误时,我都会得到我的错误页面。
现在我怎样才能为 ajax 请求实现相同的行为?我正在使用 grails remoteFunction或formRemote发出 ajax 请求。每当服务器上发生异常时,我想在 javascript 中执行相同的代码(例如,我想用 alert('There was an exception') 显示警报)。
上述方法不适用于 ajax 请求。我仍然返回一个错误,即使错误中有 myErrorPage.gsp 的内容,它也不会打印到我使用 formRemote 或 remoteFunction 的更新参数指定的 html 元素中。