如果我正在进行常规请求,我可以在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的update参数指定的html元素中。