4

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

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

  1. 我可以编写一个 javascript 函数来处理客户端的错误并重定向到错误页面。然后我必须使用-attribute在所有页面上的每个-tag 添加这个函数。<f:ajax>onerror有没有办法告诉 JSF 我想让这个 javascript-function 作为所有<f:ajax>-tags 的默认错误处理程序?
  2. 我可以使用自定义异常处理程序,如本博客所述。这似乎做了我想要的,但我想知道它是否是矫枉过正。没有更简单的解决方案吗?

所以我的问题是,这应该如何解决?应该使用我列出的哪些方法?还有另一种我不知道的方法吗?

4

1 回答 1

3

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

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

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

于 2011-08-21T16:32:12.530 回答