在浏览器中捕获服务器端ajax处理错误



假设我有一些基于ajax的组件,服务器中的处理程序由于某种原因引发异常(例如编程错误,无法访问数据库)。基本上,服务器会以内部服务器错误或类似错误进行响应。我如何在浏览器中捕捉这种情况,并在某个地方显示例如错误消息。

当用户点击此链接时,服务器将显示一个错误页面,浏览器应该根据http状态代码检测出问题,并以某种方式对此做出反应

new AjaxLink<Link>("link") {
   public void onClick(AjaxRequestTarget target) {
      throw new RuntimeException();
   }
}

请参阅org.apache.wicket.settings.IExceptionSettings#getAjaxErrorHandlingStrategy。上有一个这样的例子http://www.wicket-library.com/wicket-examples/ajax/links(故障和异常链接)。

通常,像AjaxFallbackLink这样的WicketAjax类有一个方法

updateAjaxAttributes(AjaxRequestAttributes attributes)

您可以在其中注册错误处理程序,在浏览器中执行javascript。重写此方法,创建一个AjaxCallListener并调用

AjaxCallListener listener = new AjaxCallListener();
listener.onFailure(ADD_JAVASCRIPT_TO_EXECUTE_HERE);
attributes.getAjaxCallListeners().add(listener);

参见的文档

org.apache.wicket.ajax.attributes.AjaxCallListener.getFailureHandler(组件)

最新更新