2009-10-21 2 views
1
Ошибка

Можно ли заменить стандартные страницы ошибок от JavaServer Faces, таких какЗамена JavaServer Faces страниц

500 Internal Server Error

?

К ним относятся такие данные, как трассировка стека и т. Д. Но для пользователей, когда страница находится в режиме «Производство», я хочу показать более дружелюбную страницу, в которой говорится, что запрос не удался.

ответ

5

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

<context-param> 
    <param-name>org.apache.myfaces.ERROR_HANDLING</param-name> 
    <param-value>false</param-value> 
    </context-param> 

Если вы используете реализацию Sun (Mojarra), может быть некоторыми com.sun.faces... шпонки параметра.

Вы также можете проверить значение Facelets init parameterfacelets.DEVELOPMENT (убедитесь, что вы не установили его в true).

Чтобы указать страницу с ошибкой, вы можете использовать обычные контейнерные механизмы. Для сервлетов это будет specifying a error pages inweb.xml, привязанный к любым типам исключений или кодам ошибок. Для того, чтобы поймать всех throwables ...

<error-page> 
    <exception-type>java.lang.Throwable</exception-type> 
    <location>/errorPage.faces</location> 
    </error-page> 

Вы можете найти дополнительную поддержку конкретного производителя для обработки в реализации JSF ошибки - вы должны проверить их документы.

+0

Спасибо, отличный ответ! Один из последующих вопросов, хотя, можно ли использовать сообщение об ошибке на странице улавливания? (ErrorPage.faces) –

+0

О, и кстати, где я могу найти список всех com.sun.faces ... keyed параметры? Я не использую Myfaces, я использую JSF 1.2 с Facelets. –

+0

Чтобы получить сообщение об ошибке, попробуйте выражение '# {requestScope ['javax.servlet.error.message']}'. Чтобы получить исключение, используйте 'javax.servlet.error.exception' - см. Спецификацию Servlet для значений полного списка ошибок, установленных на карту запроса (если вы хотите код ошибки и т. Д.). Вы можете Mojarra контекст PARAMS в Glassfish FAQ: http://wiki.glassfish.java.net/Wiki.jsp?page=JavaServerFacesRI#section-JavaServerFacesRI-WhatContextParametersAreAvailableAndWhatDoTheyDo – McDowell

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