通常のリクエストを行う場合、次の例のように 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 要素に出力されません。