Пользовательская страница ошибки 500 с использованием JSF — доступно ли полное сообщение об ошибке?

#java #jsf #servlets #error-handling #web.xml

#java #jsf #сервлеты #обработка ошибок #web.xml

Вопрос:

В моем web.xml ошибка 500 обрабатывается страницей JSF:

 <error-page>
    <error-code>500</error-code>
    <location>/errorpage.html</location>
</error-page>
  

Если контейнер обрабатывает ошибку 500 и вызывает эту страницу JSF, есть ли в запросе параметр запроса или основное содержимое, которое содержит полное сообщение об ошибке?

Так, например, если я использую этот код в сервлете для предоставления описания ошибки с ошибкой 500:

 response.sendError(HttpURLConnection.HTTP_INTERNAL_ERROR, "Some error message");
  

существует ли стандартный способ получить текст «Некоторое сообщение об ошибке» из запроса?

Ответ №1:

Оно доступно как атрибут запроса, ключом RequestDispatcher#ERROR_MESSAGE которого является "javax.servlet.error.message" . Итак, это должно сделать:

 <p>The error message is: #{requestScope['javax.servlet.error.message']}</p>
  

(примечание: Я предполагаю, что вы используете Facelets; для JSP вам пришлось бы поместить это в <h:outputText> )

Комментарии:

1. Я пытаюсь это, и я могу получить только javax.servlet.error.exception , но не javax.servlet.error.message , javax.servlet.error.exception_type ни одно из остальных. В чем может быть причина?