Как мне управлять обработкой исключений, возникающих внутри jsp:include включает?
У меня есть JSP, который включает в себя еще один JSP через <jsp:include>
, У меня также есть (что я думаю, что) стандартная настройка страницы ошибки. Проблема в том, что когда исключение возникает внутри включенного файла, оно не "всплывает" во включающем JSP. Вместо этого он вставляет страницу ошибки в середине процесса обработки включенного JSP.
Как ни странно, он даже не вставляет вывод страницы с ошибкой в строку, где произошла ошибка. Например, если я вызову исключение в строке 600 включенного JSP, я увижу вывод из первых 300-400 строк, а затем увижу страницу ошибки (в выведенном HTML).
Вместо того, чтобы первые 300-400 строк включенного файла появлялись в таком случае, я бы предпочел увидеть, что ни один из выводов включенной страницы не появляется вообще, а только вывод страницы с ошибкой. Это возможно, или есть какая-то проблема с буферизацией включенных файлов, которая предотвращает это?
О, и я уже попытался установить "flush='true'" для тега include, и я попытался обернуть все в try/catch как в include, так и в includee... но ничего из этого не помогло.
2 ответа
Использует ли большой буфер (<%@ page buffer="1024kb" %>
) а также flush="false"
для включенной работы?
Исходная проблема "Bubble up" может зависеть от веб-контейнера. Мы используем Websphere 7, и он работает не так, как другие версии Websphere: исключения включенной страницы не распространяются обратно на jsp включения. Если для включенной страницы не определено ни одной страницы ошибки, сообщение об исключении выводится в выходной поток.
В случае websphere 7 мы нашли параметр followng, который позволяет всплыть исключениям через тег 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
В случае других веб-контейнеров я еще не сталкивался с этой проблемой.