¿Cómo manejamos los problemas de envío de formularios dobles o de páginas de actualización en las aplicaciones web Spring Boot?

En aplicaciones web, HTTP GET se usa generalmente para obtener datos de la base de datos, mientras que POST desencadena una acción como la compra de un artículo. Por lo tanto, no desea activar una solicitud de publicación más de una vez.

Una advertencia en la página, o deshabilitar el botón en la página una vez que se presiona también podría ayudar. Sin embargo, lo que realmente está buscando es implementar el patrón post-redirect-get (PRG). Esto permite que la solicitud posterior realice su trabajo y luego desvíe la respuesta a una solicitud de obtención.

El PRG se describe aquí Post / Redirect / Get – Wikipedia. En resumen, PRG se describe como:

Donde puede ver la redirección de página que se utiliza para llamar explícitamente a otra página. Esto usará HTTP GET por defecto.

El siguiente código demuestra esto en primavera:

// Elimina un libro.
@RequestMapping (value = “/ postDeleteBook”, method = RequestMethod.POST)
public String postDeleteBook (@RequestParam (“bookId”) String bookId,
Modelo modelo) {

bookService.delete (Integer.parseInt (bookId));
devuelve “redirect: / admin / getCatalogue”;
}

A través de la redirección en la línea 7 que utiliza un HTTP GET por defecto.

No estoy familiarizado con Spring Framework, pero un error común en tales casos es la representación de la vista utilizando el servicio utilizado por su aplicación web para autenticar al usuario.

Una forma adecuada de hacerlo es utilizar el servicio con el único propósito de autenticar al usuario utilizando las entradas dadas y obtener la respuesta del servicio en el controlador para redirigir o representar su vista.

Compruebe si está haciendo algo similar a lo descrito y rectifique en consecuencia como se describió anteriormente.

Todo lo mejor 🙂

En lugar de usar RequestMethod.POST, use RequestMethod.PUT