Показать ошибку на странице JSF и продолжить ее рендеринг вместо перенаправления на отдельную страницу ошибок - PullRequest
2 голосов
/ 09 июля 2010

Всякий раз, когда возникает ошибка во время загрузки фасета JSF, JSF прекращает рендеринг страницы в точке ошибки и вместо этого показывает страницу ошибки (поведение по умолчанию). Я хочу, чтобы JSF продолжал отображать страницу и показывал исключение / ошибку на странице. Например, если страница загружает «портлет», который выдает исключение, это исключение будет отображаться в виде текста в портлете. Я не хочу, чтобы вся страница была перенаправлена ​​на отдельную страницу с ошибкой.

Я инициализировал свои собственные реализации ExceptionHandlerFactory и ExceptionHandler, и я могу успешно перебрать ExceptionQueueEvents. Однако я не знаю, как дать JSF команду продолжить загрузку страницы, несмотря на ошибку. Это даже правильный подход вообще? ExceptionHandler вызывается после (как я полагаю) или в середине обработки лицевой стороны? Если после, могу ли я что-нибудь сделать в моем ExceptionHandler?

Я знаю, что должен:

  • Скрыть части, к которым пользователь не может получить доступ (мой конкретный случай связан с безопасностью, когда пользователь пытается загрузить контент, на который у него нет прав. Однако я ищу глобальный ответ на этот вопрос)
  • Обрабатывать вручную ошибки, чтобы не возникало непредвиденных исключений

Однако я хочу, чтобы пользователь мог продолжать использовать систему, несмотря на какой-то незначительный сбой компонента (например, если какой-то портлет новостной ленты выдает ошибку, которая не должна мешать пользователю видеть другой контент и использовать его).

Я использую Мохарру 2.0.2. Я чувствую, что это очень просто решить, но я не могу понять это: (

Ответы [ 2 ]

2 голосов
/ 09 июля 2010

Если ваша страница имеет отдельный контент, рассмотрите возможность использования (i) фреймов.Таким образом, если какой-либо конкретный контент не загружается, вся страница будет по-прежнему отображаться, но в этом фрейме будет отображена страница с ошибкой.Это, конечно, подразумевает, что все ваши отдельные компоненты являются полными HTML-страницами.

BalusC абсолютно правильно, что вы НЕ должны пытаться обрабатывать какие-либо исключения при синтаксическом анализе и т. Д. Странно отображаемые сегменты страницы не удобны для пользователяи может привести к очень странным результатам.

Если у вас есть проблемы с ролями / правами, эти сценарии следует поддерживать отдельно от рендеринга jsf.Авторизация должна быть подтверждена перед пересылкой на страницу, а не при попытке ее визуализации.

1 голос
/ 09 июля 2010

Это будет означать, что вы даете конечному пользователю недоделанную HTML-страницу (потому что JSF еще не (и не может) завершить рендеринг HTML), и не определено как веб-браузер будет отображать стр.

Не делай этого.

...