2013-10-09 2 views
1

Я использую FullAjaxExeptionHandler из библиотеки omnifaces, и все работает хорошо, однако я не уверен, как показать исключение в диалоговом окне PrimeFaces на странице, где произошло исключение. В настоящее время я могу перенаправить пользователя на страницу с исключениями, как описано в демонстрации omnifaces.Omnifaces Диалог FullAjaxExceptionHandler и PrimeFaces

Что я сейчас:

<error-page> 
    <exception-type>java.lang.RuntimeException</exception-type> 
    <location>/errorpages/bug.xhtml</location> 
</error-page> 

Что я хочу:

<error-page> 
    <exception-type>java.lang.RuntimeException</exception-type> 
    <location>/currentpage.xhtml?showExceptionDialog(exception)</location> 
</error-page> 

Спасибо.

ответ

1

FullAjaxExceptionHandler не поддерживает его. FullAjaxExceptionHandler предназначен для достижения такого же поведения, как если бы это был запрос без аякса. То есть используйте web.xml, указанный <error-page> записей в соответствии со стандартным API сервлета.

Кроме того, OmniFaces не является намеренным расширением специально для PrimeFaces, поэтому невозможно использовать любые конкретные API-интерфейсы PrimeFaces, такие как RequestContext или 4.0 "диалоговое окно" в FullAjaxExceptionHandler. Это сделает его непригодным для использования в проектах, где PrimeFaces не используется, а в другой библиотеке компонентов.

Лучше всего создать собственный обработчик исключений. Вы полностью свободны принимать части исходного кода FullAjaxExceptionHandler, если вы уважаете лицензию Apache. Альтернативой может быть запрос PrimeFaces Extensions для создания и добавления обработчика исключений, который вы имели в виду, к его стандарту.

+0

Да, я создал свой собственный обработчик исключений на основе вашего кода. Я думаю, моя проблема в том, что метод handle() обработчика исключений выполняется на этапе REQUEST_RESPONSE, и слишком поздно вызывать любой javascript. Как я могу рассказать JSF из этого обработчика исключений, что я хочу выполнить некоторый javascript и сделать его рендерингом? – miro

+0

Сделайте то же самое, что и 'FullAjaxExceptionHandler': сбросьте ответ, если он еще не установлен. – BalusC

+0

Я уже пробовал это, но, возможно, я делал что-то неправильно, так как я совершенно новичок в жизненном цикле JSF. Я сделаю еще один выстрел. Благодарю. – miro

Смежные вопросы