2009-06-07 22 views
6

Busqué y busqué en Google durante horas sobre cómo hacer una redirección en jsp o servlets. Sin embargo, cuando intento aplicarlo, no funciona.No se puede redireccionar con response.sendRedirect

Código que tengo dentro de la página JSP:

<% 
    String articleId = request.getParameter("article_id").toString(); 
    if(!articleId.matches("^[0-9]+$")) 
    { 
     response.sendRedirect("index.jsp"); 
    } 
%> 

Sé de depuración que las obras de expresiones regulares y si alguna vez, articleId no es el número, la if va en el interior, sin embargo cuando se alcanza response.sendRedirect Doesn en realidad hace redirigir.

¿Extraño algo muy fundamental en este caso?

Gracias de antemano.

Respuesta

22

Usted debe return después de la reorientación:

response.sendRedirect("index.jsp"); 
return; 
+1

Eso fue todo. Agregar devolución está funcionando. Gracias. – Dmitris

+5

Vale la pena considerar el "por qué" de esto. El sendRedirect() agrega un encabezado a la respuesta HTTP, y eso es todo. Si luego procede a escribir algo de contenido para la respuesta, entonces el navegador puede considerar que el encabezado de redirección es superfluo e ignorarlo. Siempre vale la pena considerar el orden en que llama a los métodos en el objeto de respuesta; a menudo puede conducir a modos de falla extraños sin una razón obvia. La API de Servlet es bastante explícita al describir estos posibles problemas. – skaffman

+0

[También tengo el mismo problema] (http://stackoverflow.com/q/9866964/1041341), probé esta solución pero no funcionó allí, por favor ayuda –

1

¿Hay contenido antes de este scriptlet? Si es así, la redirección no funcionaría.

Además, la práctica común es tener dicha lógica dentro de un servlet u otra clase que sirva como controlador, y dejando que el JSP maneje solo la representación del HTML. También puede resolver su problema. Por ejemplo, ver here

+0

[I también tienen el mismo problema] (http://stackoverflow.com/q/9866964/1041341), he intentado esta solución, pero no trabajando allí, por favor ayuda –

Cuestiones relacionadas