2014-08-27 2 views
1

На моей странице с ошибкой не отображается сообщение об ошибке, отправленное методом senderror. Ошибка Страница:Показать сообщение sendError на странице xhtml

<h:head> 
    <title>Error Page</title> 
</h:head> 
<h:body> 
    <p>Error : #{requestScope['javax.servlet.error.message']}</p> 
    <h:outputText value="#{requestScope['javax.servlet.error.message']}" /> 
</h:body> 

Я посылаю ошибку, как это с фильтром

((HttpServletResponse) response).sendError(-1, "You do not have a active session to access this page."); 

Правильная страница отображается, но я могу видеть только выход, как:

Error : 

Но сообщение об ошибке из javax.servlet.error.message не печатается.

ответ

1

Это говорит о том, что FacesServlet не вызывается в запросе страницы ошибки, в то время как тот отвечает за разбор всех тегов JSF и выражений EL в этом XHTML-файле и выводе HTML-вывода. Чтобы подтвердить это, нажмите правую страницу ошибки в браузере и сделайте View Source; вы не должны видеть какие-либо JSF/EL вещи там, но чистый JSF-сгенерированный вывод HTML.

Вы должны убедиться, что <error-page><location> в web.xml соответствует <url-pattern> в FacesServlet, как это определено в web.xml. Если вы, например, сопоставили его по шаблону URL-адреса /faces/*, то местоположение страницы ошибки должно быть как /faces/error.xhtml. В противном случае измените отображение FacesServlet на *.xhtml, чтобы вам никогда не приходилось беспокоиться о виртуальных URL-адресах.

То, что -1 является абсолютно не a действительный HTTP status code для начала. Что-то в диапазоне 4xx более подходит для этого. Например. 400 или, возможно, 401 в зависимости от того, как вы выполняете аутентификацию.

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