Mam pliku JSP, który zawiera inny plik JSP sprawdzić niektóre wartości i takie:response.sendRedirect() from jsp: include being ignored?
<jsp:include page="setup.jsp" />
Wewnątrz setup.jsp Mam trochę kod warunkowy, który określa, czy pewne wartości są potrzebne ustawić w sesji i jeśli nie przekieruje ich na inną stronę. A przynajmniej tak powinno być, ale przekierowanie wydaje się być ignorowane.
System.err.println("Redirecting!");
response.sendRedirect("http://www.google.com");
return;
Widzę "Przekierowanie!" logować się do konsoli, ale strona kontynuuje i renderuje się normalnie. Miałem zwinięte nagłówki dla mnie i zobaczyłem, że odpowiedź jest HTTP/1.1 200 OK
, więc zdecydowanie nie wysyła przekierowania 302.
Każdy pomysł, jaki jest problem i jak mogę to naprawić?
EDYCJA: Potwierdziłem, że moja odpowiedź nie została jeszcze zatwierdzona. response.isCommitted()
zwraca false
co oznacza, że kod statusu i nagłówki nie zostały jeszcze wysłane.
EDIT 2: Próbowałem dzwonić pod numer response.sendRedirect()
w wielu innych miejscach i stwierdziłem, że mogę z powodzeniem przekierować przed. Przekierowanie wewnątrz strony JSP wydaje się być ignorowane i jeśli spróbuję przekierować bezpośrednio PO JSP, otrzymam niedozwolony wyjątek stanu, ponieważ odpowiedź została już zatwierdzona.
Istnieje szansa, że część odpowiedzi zostanie wysłana bezpośrednio do klienta, a przekierowanie zostanie zignorowane. Przekierowanie powinno być (prawie) pierwszą rzeczą do przeanalizowania. – Augusto
Muszę zmieścić to w znacznie większej strukturze aplikacji internetowej, więc moje ręce są związane, kiedy i gdzie mogę umieścić kod, aby wykonać przekierowanie. Czy istnieje sposób, w jaki mogę przetestować, czy odpowiedź jest już dostarczona do przeglądarki, gdy próbuję wykonać przekierowanie? Czy masz jakieś sugestie, w jaki sposób mogę zainicjować przekierowanie, gdy jestem pochowany w jsp: zawiera? –
Dodałem prostą wiadomość out.println() do miejsca, w którym dzwonię przekierowanie i że wyjście pojawia się przed każdym innym wyjściem z odpowiedzi. Czy nie powinienem mieć możliwości przekierowania w tym momencie? –