2012-05-10 3 views
0

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

Часть моей web.xml

<error-page> 
     <exception-type>java.lang.Exception</exception-type> 
     <location>/faces/error.jsf</location> 
    </error-page> 
    <error-page> 
     <error-code>500</error-code> 
     <location>/faces/error.jsf</location> 
    </error-page> 

ответ

3

Это может произойти, когда происходит исключение во время AJAX запроса, или когда происходит исключение, когда ответ уже совершено.

Исключения из запросов ajax должны обрабатываться пользователем ExceptionHandler. OmniFaces имеет такой, FullAjaxExceptionHandler, который использует стандартный механизм страницы API-интерфейса Servlet.

Исключения во время отклика ответа не могут быть обработаны, поскольку часть ответа уже отправлена ​​клиенту, который является точкой без возврата. Этого можно избежать только путем увеличения размера буфера ответа с помощью следующего параметра контекста в web.xml:

<context-param> 
    <param-name>javax.faces.FACELETS_BUFFER_SIZE</param-name> 
    <param-value>65535</param-value>  
</context-param> 

Приведенный выше пример устанавливает его в 64KB, он должен быть размером вашей самой большой страницы. Таким образом, ответ не будет зафиксирован до тех пор, пока размер не достигнет 64 КБ или когда он будет завершен. Таким образом, контейнер может изменить ответ на страницу с ошибкой при возникновении исключения.


Unrelated к конкретной проблеме, вы, кстати, перекрытие в конфигурации страницы ошибок нет. Исключения имеют неявно всегда статус 500, и вы указываете на ту же страницу ошибок. Таким образом, страница с ошибкой java.lang.Exception является сверхплотной.

+0

Спасибо balusC, но нет другого пути ?, потому что я не могу использовать библиотеку OmniFaces или любой другой компонент по заказам клиента! – Carlos

+0

Это с открытым исходным кодом. Он должен дать вам представление о создании собственного пользовательского «ExceptionHandler». – BalusC

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