Я работаю над приложением JSF, которое использует всевозможные символы. У меня есть специальный класс обработчика исключений для всех запросов ajax путем расширения FullAjaxExceptionHandler и переопределения функции shouldHandleExceptionRootCause(). Здесь я добавляю свои бизнес-ошибки в контекст, и я должен отображать эти сообщения на страницах xhtml. вызовы ajax производятся от клиента, используя p: commandButton. Но значения, которые я устанавливаю в контексте из моего настраиваемого обработчика исключений, не отображаются на странице xhtml.Настроить FullAjaxExceptionHandler, чтобы отображать только сообщение лиц для определенных исключений
public class CustomExceptionHandler extends FullAjaxExceptionHandler {
@Override
protected boolean shouldHandleExceptionRootCause(FacesContext context, Throwable exception) {
context.addMessage(null, FacesMessage);
context.getApplication().getNavigationHandler().handleNavigation(context, null, null);
context.getPartialViewContext().setRenderAll(true);
context.renderResponse();
setRequest(request, baseRunTimeException);
return false;
}
}
Но сообщение, которое я добавляю в контексте не отображаются в р: Сообщения тег
Пожалуйста, дайте мне знать, если что-нибудь не так с этим подходом?
Вы в основном отключите «FullAjaxExceptionHandler» и полностью выполняете свое задание, пытаясь вручную обработать навигацию и рендеринг. Вы не используете «FullAjaxExceptionHandler» разумным способом. Этот метод предназначен для возврата true/false в конкретный тип исключения и ничего более. Что именно вы хотите? Просто добавление исключения в качестве сообщения лиц? Если это так, используйте OmniFaces 'FacesMessageExceptionHandler' вместо этого. – BalusC
Привет, я проверил FacesMessageExceptionHandler, но mysceanrio немного отличается, я не хочу отображать все Исключения как Сообщения, некоторые из них будут перенаправлены на другую страницу с ошибкой. Удастся ли это достичь этой функциональности? Если да, пожалуйста, предложите мне, как это сделать? – prabu