| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java EE (J2EE) и Spring > Почему response в jsp бывает commited? |
| Автор: marlborist 23.10.2007, 12:05 |
| У меня такая проблема: Я пытаюсь сделать response.sendRedirect(url); Но возникает ошибка: IllegalStateException. Затем я выяснил что IllegalStateException возникает из - за того что response уже commited. Затем я выяснил что response уже commited потому что в jsp где я вызываю iresponse.sendRedirect(url) есть include jsp файлы. Подскажите пожалуйсто как сделать так чтобы response небыл сommited или как в таком случае сделать redirect. |
| Автор: mbasil 23.10.2007, 14:11 |
| Если есть возможность, сделайте Redirect до включения другой страницы (на самом деле это ведь, обычно делается в самом начале). include можно сделать двумя способами 1. <%@ include file=”...” %> 2. <jsp:include page=”...” /> Попробуйте заменить способ включения страницы. И еще, посмотрите исходный код, который сгенерировал контейнер |
| Автор: ekr 23.10.2007, 15:27 |
| Response становится commited, когда сбрасывается (flush) буфер ответа, т.е. первые строчки уже полетели клиенту. После этого послать ему redirect-овый http-ответ уже нельзя. Мораль: надо или менять логику (делать редирект по условию, проверку этого условия в начале) или поиграться с буфером (никакого фрейдизма ;-). Отлючить autoflush буфера и сбрасывать его вручную или сделать побольше размер буфера. Но это все полумеры - надо менять логику. |