Saltar al contenido

¿El controlador Spring-MVC redirige a la página “anterior”?

Solución:

A continuación, le indicamos cómo hacerlo, muchachos (tenga en cuenta que esta es la sintaxis RESTful Spring 3 MVC, pero funcionará en controladores Spring más antiguos):

@RequestMapping(value = "/rate", method = RequestMethod.POST)
public String rateHandler(HttpServletRequest request) {
    //your controller code
    String referer = request.getHeader("Referer");
    return "redirect:"+ referer;
}

Una opción, por supuesto, sería abrir el formulario de edición en una nueva ventana, por lo que todo lo que el usuario tiene que hacer es cerrarlo y volver a donde estaba.

Hay algunos lugares en mi aplicación actual donde necesito hacer algo complicado, luego pasar al usuario a un formulario y luego hacer que regrese al punto de partida. En esos casos, guardo el punto de partida en la sesión antes de pasarlos. Probablemente sea una exageración para lo que estás haciendo.

Otras opciones: 1) puede almacenar el encabezado “Referer” y usarlo, pero puede que no sea confiable; no todos los navegadores configuran ese encabezado. 2) podría tener javascript en la página de confirmación después del envío del formulario que llama “history.go(-2)“.

Mi respuesta es similar a la de Sam Brodkins (también la recomendé). Pero teniendo en cuenta que el valor “Referer” puede no estar disponible, hice esta función para usarla en mis controladores

/**
* Returns the viewName to return for coming back to the sender url
*
* @param request Instance of {@link HttpServletRequest} or use an injected instance
* @return Optional with the view name. Recomended to use an alternativa url with
* {@link Optional#orElse(java.lang.Object)}
*/
protected Optional<String> getPreviousPageByRequest(HttpServletRequest request)
{
   return Optional.ofNullable(request.getHeader("Referer")).map(requestUrl -> "redirect:" + requestUrl);
}

Entonces, en la función de llamada del controlador, debe devolver algo como esto:

@RequestMapping(value = "/upload", method = RequestMethod.POST)
public @ResponseBody
String testRedirection(HttpServletRequest request)
{
      //Logic....
      //Returns to the sender url
      return getPreviousPageByRequest(request).orElse("https://foroayuda.es/"); //else go to home page
}
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *