在Ajax请求期间处理错误的规范方法是什么?

时间:2011-08-21 10:21:42

标签: ajax error-handling jsf-2 glassfish-3 mojarra

对于正常请求,我们可以在<error-page>中简单地注册web.xml。但是,这不适用于Ajax请求。默认情况下,Ajax请求期间的错误将导致浏览器中出现一个显示异常的弹出窗口。

我正在努力解决的主要问题是以统一的方式处理ViewExpiredException。对于标准请求,我重定向到一个页面,该页面说明用户未登录并提供登录页面的链接。我想对Ajax请求做同样的事情。似乎有几种方式:

  1. 我可以编写一个javascript函数来处理客户端的错误并重定向到错误页面。然后,我必须使用<f:ajax> - 属性在所有页面上添加此函数每个onerror - 标记。有没有办法告诉JSF我想将这个javascript-function作为所有<f:ajax> - 标签的默认错误处理程序?
  2. 我可以使用自定义异常处理程序,如this blog中所述。这似乎做我想要的,但我想知道它是否有点过分。有没有更简单的解决方案?
  3. 所以我的问题是,这应该如何解决?我应该使用哪种方法?还有其他方法我不知道吗?

1 个答案:

答案 0 :(得分:3)

您可以使用jsf.ajax.addOnError()设置默认错误处理程序。 E.g。

jsf.ajax.addOnError(function(data) {
    alert(data.responseText);
});

另见JSF2 spec的第13.3.6.2章。您可以在JSF2规范的表14-4中找到data对象的所有属性。