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

发布于 2024-11-30 10:01:45 字数 754 浏览 4 评论 0原文

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

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

  1. 我可以编写一个 JavaScript 函数来处理客户端的错误并重定向到错误页面。然后,我必须使用 onerror 属性在所有页面上的每个 -标记添加此函数。有没有办法告诉 JSF 我希望将此 javascript 函数作为所有 标签的默认错误处理程序?
  2. 我可以使用自定义异常处理程序,如 此博客。这似乎符合我的要求,但我想知道这是否太过分了。难道就没有更简单的解决办法吗?

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

For normal requests we can simple register an <error-page> in web.xml. However, this does not apply to Ajax-requests. By default errors during an Ajax-request will result in a little pop-window in the browser that shows the exception.

The main example I am struggling with is handling a ViewExpiredException in a uniform way. For standard requests, I redirect to a page that explains that the user is not logged in and provides a link to the login-page. I would like to do the same for Ajax-requests. There seem to be several ways:

  1. I could write a javascript function that handles the error on the client-side and redirects to the error-page. I would then have to add this function every <f:ajax>-tag on all pages using the onerror-attribute. Is there a way to tell JSF that I want to have this javascript-function as the default error-handler for all <f:ajax>-tags?
  2. I could use a custom exception-handler, as described in this blog. This seems to do what I want, but I wonder if it is overkill. Is there no simpler solution?

So my question is, how is this supposed to be solved? Which of the approaches I listed should be used? Is there another approach that I do not know of?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

树深时见影 2024-12-07 10:01:45

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

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

另请参阅 Faces 4.0 规范的 第 13.3.6.2 章 。您可以在 中找到 data 对象的所有属性表 16 Faces 4.0 规范的错误数据负载

如果您碰巧仍在使用 JSF 2.x,请改用 jsf.ajax.addOnError()。

You can use faces.ajax.addOnError() to set the default error handler. E.g.

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

See also chapter 13.3.6.2 of the Faces 4.0 spec. You can find all properties of data object in Table 16 Error Data Payload of the Faces 4.0 spec.

If you happen to be still on JSF 2.x, then use jsf.ajax.addOnError() instead.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文