Вопрос по jsf-2, ajax – Как правильно обрабатывать исключения JSF 2.0 для компонентов AJAXified?

13

Я настроил web.xml так, чтобы все, что является java.lang.Throwable (то есть любые неперехваченные исключения или ошибки), перенаправляло на страницу с ошибкой. Однако для компонентов AJAXified исключения не направляются на страницу ошибок через этот механизм.

Тестовый пример у меня простойCommandButton привязанный к методу действия, который всегда бросаетRuntimeException, Похоже, что лучше всего было бы, чтобы метод действия перехватывал исключение и добавлялFacesMessage Тип ошибки серьезности. Это то, что люди делают? Есть ли способ настроить JSF таким образом, чтобы в случае, если метод вспомогательного компонента AJAXified выдает исключение, что страница ошибки может быть показана?

Ваш Ответ

1   ответ
16

ExceptionHandler для этого, который делаетbasically следующее, когда исключение происходит в запросе ajax:

String errorPageLocation = "/WEB-INF/errorpages/500.xhtml";
context.setViewRoot(context.getApplication().getViewHandler().createView(context, errorPageLocation));
context.getPartialViewContext().setRenderAll(true);
context.renderResponse();

Это не совсем тривиально, если вы хотите принятьweb.xml страницы ошибок в учетную запись. Вам нужно проанализировать весьweb.xml для этого нужно найти местоположения страницы ошибок. Кроме того, когда исключение возникло во время ответа на рендеринг, тогда вам, в основном, необходимо заново создать весь вид.OmniFaces библиотека компонентов имеет именно такой обработчик исключений,FullAjaxExceptionHandler, Вы можете найти полный исходный кодВот и пример витриныВот.

See also: using ExternalContext.dispatch in JSF error handler causes corrupt page rendering Session timeout and ViewExpiredException handling on JSF/PrimeFaces ajax request

Похожие вопросы