Как контролировать обработку исключений, создаваемых внутри jsp:include?
-
21-08-2019 - |
Вопрос
У меня есть JSP, который включает в себя еще один JSP через <jsp:include>
.У меня также есть (как я думаю) стандартная настройка страницы ошибок.Проблема в том, что когда исключение возникает внутри включаемого файла, оно не «всплывает» во включающий JSP.Вместо этого он вставляет страницу ошибки в середине обработки включенного JSP.
Как ни странно, он даже не вставляет вывод страницы ошибки в строку, в которой произошла ошибка.Например, если я вызову исключение в строке 600 включенного JSP, я увижу выходные данные первых 300-400 строк, а затем увижу страницу с ошибкой (в выведенном HTML).
Вместо первых 300-400 строк включаемого файла, появляющихся в таком случае, я бы предпочел видеть, что ни один из выводов включенной страницы вообще не появляется, и только вывод страницы ошибки.Возможно ли это, или есть какая-то проблема с буферизацией включенных файлов, которая мешает этому?
О, и я уже пробовал установить «flush='true'» в теге include, и я пробовал обернуть все в try/catch как для включающего, так и для включаемого...но ничего из этого не помогло.
Решение
Использует ли большой буфер (<%@ page buffer="1024kb" %>
) и flush="false"
для включения работы?
Другие советы
Исходная проблема «Вздутия» могла зависеть от веб-контейнера.Мы используем Websphere 7, и она работает иначе, чем другие версии Websphere:исключения включенной страницы не распространяются обратно на включающий jsp.Если для включенной страницы не определена страница ошибки, сообщение об исключении выводится в выходной поток.
В случае с веб-сферой 7 мы обнаружили следующий параметр, который позволяет исключениям всплывать через тег jsp:include:com.ibm.ws.webcontainer.dispatcherRethrowSError из пакета исправлений 15.Вот дополнительная информация: http://pic.dhe.ibm.com/infocenter/wasinfo/v7r0/index.jsp?topic=%2Fcom.ibm.websphere.express.doc%2Finfo%2Fexp%2Fae%2Frweb_custom_props.html
В случае с другими веб-контейнерами я еще не сталкивался с этой проблемой.