Каков канонический способ обработки ошибок при Ajax-запросах? - PullRequest
4 голосов
/ 21 августа 2011

Для обычных запросов мы можем просто зарегистрировать <error-page> в web.xml.Однако это не относится к Ajax-запросам.По умолчанию ошибки во время Ajax-запроса приводят к появлению небольшого всплывающего окна в браузере, которое показывает исключение.

Основной пример, с которым я борюсь, - это обработка ViewExpiredException единообразным способом.Для стандартных запросов я перенаправляю на страницу, которая объясняет, что пользователь не вошел в систему, и предоставляет ссылку на страницу входа.Я хотел бы сделать то же самое для Ajax-запросов.Кажется, есть несколько способов:

  1. Я мог бы написать функцию javascript, которая обрабатывает ошибки на стороне клиента и перенаправляет на страницу ошибок.Затем мне пришлось бы добавить эту функцию каждый <f:ajax> -tag на всех страницах , используя onerror -атрибут.Есть ли способ сообщить JSF, что я хочу использовать эту функцию javascript в качестве обработчика ошибок по умолчанию для всех <f:ajax>-тегов?
  2. Я мог бы использовать собственный обработчик исключений, как описано в этот блог .Кажется, это делает то, что я хочу, но мне интересно, если это излишне.Разве нет более простого решения?

Итак, мой вопрос, как это должно быть решено?Какой из перечисленных мною подходов следует использовать?Есть ли другой подход, о котором я не знаю?

1 Ответ

3 голосов
/ 21 августа 2011

Вы можете использовать jsf.ajax.addOnError() для установки обработчика ошибок по умолчанию. Э.Г.

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

См. Также главу 13.3.6.2 спецификации JSF2 . Вы можете найти все свойства объекта data в таблице 14-4 спецификации JSF2.

...