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

问题描述 投票:0回答:1

对于普通请求,我们可以简单地在

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

我正在努力解决的主要例子是以统一的方式处理

ViewExpiredException
。对于标准请求,我重定向到一个页面,该页面解释用户未登录并提供登录页面的链接。我想对 Ajax 请求做同样的事情。似乎有几种方法:

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

ajax jsf error-handling mojarra
1个回答
4
投票
您可以使用

faces.ajax.addOnError()

 设置默认错误处理程序。例如

faces.ajax.addOnError(function(data) { alert(data.responseText); });
另请参阅 Faces 4.0 规范的

第 13.3.6.2 章。您可以在 Faces 4.0 规范的 Table 16 Error Data Payload 中找到

data
对象的所有属性。 如果您碰巧仍在使用 JSF 2.x,请改用

jsf.ajax.addOnError()

    

© www.soinside.com 2019 - 2024. All rights reserved.