Tengo un archivo JSP, que incluye otro archivo JSP para comprobar algunos valores y dicho:response.sendRedirect() de jsp: ¿incluir ser ignorado?
<jsp:include page="setup.jsp" />
Dentro de la setup.jsp Tengo algo de código condicional que determina si algunos valores son necesarios establecer en la sesión y si no los redirige a una página diferente. O al menos se supone que debe hacerlo, pero la redirección parece estar siendo ignorada.
System.err.println("Redirecting!");
response.sendRedirect("http://www.google.com");
return;
Veo "Redirecting!" inicie sesión en la consola, pero la página continúa y se procesa normalmente. Tuve curl dump los encabezados para mí y vi que la respuesta es HTTP/1.1 200 OK
por lo que definitivamente no está enviando un redireccionamiento 302.
¿Alguna idea de cuál es el problema y cómo puedo solucionarlo?
EDIT: he verificado que mi respuesta aún no está confirmada. response.isCommitted()
devuelve false
lo que significa que el código de estado y los encabezados aún no se han enviado.
EDIT 2: Intenté llamar al response.sendRedirect()
en muchos otros lugares y descubrí que puedo redirigir con éxito antes de. Parece que se ignora la redirección dentro del JSP y si trato de redirigir a la derecha DESPUÉS del jsp, recibo una excepción de estado ilegal porque la respuesta ya se ha confirmado.
Existe la posibilidad de que parte de la respuesta ya se haya enviado al cliente y se ignore la redirección. La redirección debería ser (casi) lo primero que se analizará. – Augusto
Tengo que ajustar esto dentro de una estructura de aplicación web mucho más grande, por lo que mis manos están atadas cuando se trata de cuándo y dónde puedo colocar el código para hacer la redirección. ¿Hay alguna manera de probar para ver si la respuesta ya ha sido entregada al navegador cuando estoy tratando de hacer mi redirección? ¿Tiene alguna sugerencia de cómo puedo iniciar algún tipo de redirección cuando estoy enterrado en jsp: incluye? –
Agregué un mensaje out.println() simple a la ubicación a la que llamo redirigir y ese resultado aparece antes que cualquier otro resultado de la respuesta. Entonces, ¿no debería poder redirigir en ese punto? –