Я работаю с веб-каркасом (uPortal), который обрабатывает ошибки, просто бросая исключение и затем вися. Рамки работают путем рендеринга XML в HTML. Когда возникает исключение, браузер получает отображаемый контент до элемента XML-шаблона, который терпит неудачу, а затем браузер просто сидит и ждет тайм-аута. Теория нашей команды заключается в том, что контент отправляется до возникновения ошибки, что меня удивило. Другие рамки, с которыми я работал, похоже, заканчивают рендеринг перед отправкой содержимого.Переадресовать веб-страницу после отправки некоторого содержимого
Мой вопрос: есть ли способ перенаправить браузер после того, как контент уже отправлен? В этом случае мы находимся в середине рендеринга содержимого тега <script>
, но ошибка может произойти потенциально в любом месте html.
Мое единственное, что я хочу сказать, это вставить некоторый javascript вверху страницы и попытаться изменить поведение структуры, чтобы быстро выйти из строя и закрыть соединение и добавить теги </body>
и </html>
при возникновении ошибки. Затем вышеупомянутый javascript будет запускаться на pageload и обнаруживать, есть ли содержимое всей страницы и направить клиентскую сторону, если нет. Возможно, он может искать специальный скрытый div внизу страницы.
Существуют ли какие-либо примеры решений, решающих эту проблему по-разному, или людей, использующих аналогичные рамки, которые работают вокруг этой проблемы?
Как другие решения решить эту проблему? Например, как Весна? Ожидается ли весна до тех пор, пока не будут отображены представления перед записью ответа? Или все рамки имеют эту проблему? – xdhmoore
@xdhmoore в конце Весна также основана на технологии сервлетов, и насколько я знаю, следуя второй стратегии, упомянутой в моем ответе. Этот https://spring.io/blog/2013/11/01/exception-handling-in-spring-mvc может представлять интерес, но в основном это касается того, как отправлять на значимую страницу ошибок, а не как избежать или восстановить из исключения. – wero
Подходит ли весна для исключения исключений из слоя view/jsp? Там, где я запутался, в этой структуре мы наблюдаем, как страница замораживается в исключении после загрузки всего предыдущего содержимого.Я думал, что другие фреймворки, такие как spring, все сделали перед тем, как начать возвращать контент (чтобы они могли вернуть страницу ошибки в случае исключения), но эта структура, похоже, начинает возвращать контент до того, как будет сделана рендеринг, которая, как мне кажется, ваш вариант 3 выше единственного выбора ... – xdhmoore