2009-03-05 18 views
21

He tenido algunos problemas con ActionMessages creados durante la ejecución de una acción que no se muestra, y descubrí que mis problemas se debían a que mis forwards tenían redirect=true en struts-config.xml.¿Por qué usar 'redirect = true' en struts 1. * forward?

Dado que el comportamiento predeterminado es redirect=false, he estado pensando en qué ventajas se puede tener al usar redirect=true y no he podido encontrar ninguna respuesta. ¿Alguien sabe cuándo y por qué se debe usar redirect=true en adelante?

Respuesta

31

evita que el 'problema doble submit'

Nunca mostrar páginas en respuesta a POST

páginas se cargan siempre utilizando GET

Navegar desde la POST a GET usando REDIRECT

más en este here y here

24

Redirect envía una respuesta al navegador que obliga al navegador a realizar una nueva solicitud. Desde el punto de vista del servidor, el navegador simplemente realiza una nueva solicitud (aunque de manera automática). Algunas características de una redirección:

  • Los parámetros existentes y atributos están dispuestas, una nueva solicitud se forma con los parámetros que especifique en la URL.
  • La nueva URL está visible en el navegador, el usuario puede marcarla como marcador.
  • Se necesita un viaje a el navegador y viceversa, por lo que puede ser más lento.

Se produce un reenvío en el servidor. El navegador no está involucrado en esto. Algunas características del reenvío:

  • Se han agregado nuevos parámetros o sobrescribe los parámetros existentes. Por lo tanto, los parámetros existentes no se pueden eliminar de la solicitud.
  • Las cosas se pueden agregar en el contexto de solicitud, seguirá estando disponible. Puede pasar información de esta manera.
  • La URL no se cambia en el navegador, para el navegador la dirección original permanece intacta.
  • Solo puede reenviar a otra URL en la misma aplicación.

Depende de lo que quiere lograr. Un delantero generalmente se habla más rápido. Pero si el usuario debe poder marcar la nueva ubicación, no es una opción.

0

Si especifica redirect="true", Struts usa una redirección del lado del cliente [response.sendRedirect()]. El JSP se invocará mediante una nueva solicitud del navegador y se perderán todos los datos almacenados en la solicitud anterior.

Cuestiones relacionadas