开发者

What is the canonical way to handle errors during Ajax-requests?

开发者 https://www.devze.com 2023-03-29 09:05 出处:网络
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

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 开发者_JAVA百科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?


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

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

See also chapter 13.3.6.2 of the JSF2 spec. You can find all properties of data object in table 14-4 of the JSF2 spec.

0

精彩评论

暂无评论...
验证码 换一张
取 消