Voy a levantar como siempre.
Hasta el momento el formulario funciona bien, pero tiene un pequeño detalle que tenemos que solucionar.
Por ejemplo, voy a enviar, vamos a completar con cualquier información.
Me enviar perfecto a ese ambiento los datos.
Pero claro, hay un pequeño detalle.
Qué pasa si el usuario vuelve a refrescar acá?
Bueno, si se fijan se vuelve a enviar el formulario, se reenvía y es justamente lo que hemos estado
haciendo.
Pero como es un curso, da lo mismo, no tiene tanta importancia, pero en un proyecto real este tipo
cosa hay que evitar porque el usuario podría actualizar cierto continuar y se vuelven bien los datos.
Y qué pasa si estamos trabajando con base datos con INSERT?
Estamos guardando datos en la tabla hace rato se están duplicando.
Cada que hace un refresh se vuelven a guardar los datos.
Entonces queda duplicidad y eso hay que evitarlo completamente.
Para ir finalizando esta sección de formulario lo vamos a implementar.
Entonces, una de las cosas que se tienen que evitar es cuando se maneja el post, cuando obtenemos
los datos del formulario para procesar, ya sea para insertar en una tabla enlace datos, o para enviar
correo o para lo que sea.
Siempre evitar cargar la vista, no cargar la vista, sino que tenemos que hacer un refresco, un directo,
redirigir a otra página y cuando se redirige a otra página, una nueva petición.
Ya cuando el usuario actualiza no se vuelve a enviar el formulario, ya que es otro rico, esa es otra
petición.
Entonces vamos a ir al código y tenemos que modificar.
Nos vamos a hacer el controlador.
Por ejemplo, en procesar en el método post acá.
Entonces hay que evitar esto el ratón, cargar la vista.
Entonces lo que podemos hacer es un método, un nuevo método de controlador con una petición del tipo
get, un handler request del tipo quiet.
Y ahí se maneja el resultado o el ver el detalle del usuario que creamos o que se registro.
Pero no acá, sino en otro request.
Y acá hacemos un rey directo redirigir hacia la otra ruta.
Bueno, antes de modificar el procesar del tipo post, vamos a crear este método.
Entonces Request mapping.
Bueno, la ruta, por ejemplo, cualquiera puede ser resultado ver o detalle.
En mi caso le voy a colocar, pero ahora, por supuesto, si estamos trabajando con base dato, podría
pasar un parámetro en la ruta con el Heidy del usuario que se creó, pero como no es el caso, el usuario
va a ser el mismo que está guardado en la sesión.
Recuerden que más arriba tenemos anotado concesion atributos.
Por lo tanto, este usuario está guardado en la sesión riquesa hasta que se complete, hasta que se
invoque el método set complet de sesión status.
Entonces esto acá lo podremos quitar de acá, lo quitamos y lo dejamos en este nuevo método para que
así este usuario que está en el sesión Atributos esté disponible en este nuevo método.
Por ejemplo, ver.
Bien, entonces lo primero Proton la vista que vista está de acá.
Y acá tengo que cambiar en vez de resultado, sería re directo.
2 Punto es el larch.
Siempre lo rire comienzan con Larch o Diagonal y la ruta en este caso ver entonces redirige hacia esta
ruta.
Por lo tanto realiza un nuevo rico.
Esto bien y acá.
Bueno, lo primero es pasar el título acá el título resultado effort, ya que acá vamos a manejar el
resultado.
Pero para eso necesitamos el modelo.
Entonces lo pasamos acá.
También el sesio un atributo destaca sesione status, perdón, sesiona status.
Lo dejamos acá.
En realidad lo cortamos acá.
Lo eliminamos porque se maneja ya en este método.
Acá realizamos el complet.
Esto lo cortamos y lo dejamos acá.
Bien, vamos a ordenar esto.
Lo podemos quitar esto de acá.
Esto se elimina ya que no se pasa a la vista.
No lo estamos pasando a la vista y qué faltaría.
Bueno, acá tenemos que enviar el usuario.
Bueno, en realidad el usuario está en la sesión.
En la sesión HTTP lo que tengo que hacer es inyectar este usuario acá en este método.
Pero de dónde lo tenemos?
Del sesión atributos acá.
Y vamos a importar, importamos.
Importante tiene que ser en singular sin la s.
Sesión atributo, si se fijan acá es en singular, pero acá arriba, donde se guarda es en plural.
Entonces indicamos que obtengamos el usuario de la sesión desde el sesiona atributos con el nombre con
el cual lo guardamos.
Usuario.
Entonces acá sería usuario.
Entonces estamos inyectando el usuario que está guardado con ese nombre en los sesen atributo en singular
llégate, tenemos el usuario y automáticamente como está en exceso, el atributo también está en la
vista.
Por lo tanto, no es necesario tener que pasarlo a la vista con el modelo.
Ya está en la vista, ya que al estar en exceso, un atributo también está en el modo del atributo,
en la plantilla, en la vista.
Por lo tanto, no es necesario tener que pasarlo solamente el título, aunque si queremos igual lo podemos
pasar con el atributo usuario usuario.
Pero en este caso da lo mismo y guardamos bien el título.
Es todo acá.
Lo podemos cortar en el procesar y lo dejamos acá dentro del hash errors, ya que solamente lo vamos
a mostrar cuando ocurra un error para validar.
Ya que después redirige, si sale todo bien, redirige a ver cómo está la sesión.
Va a mostrar el detalle al usuario, pero en otro rico esto ahora claro, el usuario una vez que se
envía y carga esta página se elimina.
Acá tenemos el status set completo, se elimina de la sesión, por lo tanto, después si actualizamos
la página, el usuario va a ser NULL, no va a asistir en la sesión y va a lanzar un error, pero eso
lo vamos a manejar después.
Por ahora vamos a probar.
Ya tengo lantado, así que vamos a revisar.
Vamos a ir al formulario un clic enter para cargar los datos.
Vamos a completar.
Acá.
12.
Y alguna fecha?
En pie.
Si se fijan acá, Redirigen cambia la ruta Querelle GijÃn funciona bien.
Hace un directo.
Ya no estamos dentro del post, estamos dentro del yeta.
De hecho se actualizo.
No me pide volver, enviar formulario y eso está perfecto.
Evitemos duplicar, por ejemplo, el insert.
Si estamos trabajando en pasearlos o volver a procesar los datos, entonces actualizamos.
Balcázar Un error complicaba el usuario se elimina de la sesión por el complet.
Acá vamos a actualizar.
Se fijan?
Error no existe el atributo usuario en el cesion atributo por qué se completó?
Entonces tenemos que hacer lo siguiente primero acá en sesión atributo name le damos el atributo name
igual usuario coma y por acá recuas.
Ayer lo dejamos en fols.
No es requerido perfecto, pero además tenemos que validar.
Entonces cuando se vuelve a enviar perfecto se muestra los datos, pero después actualizamos.
No va a lanzar ese error, pero si van a ser un error de que el usuario en NULL.
Entonces ahora podemos validar, entonces por acá valíamos IF si el nulo si es null, perfecto, lo
manejamos.
Qué hacemos?
Restringimos por ejemplo, acá vamos a tener un directo
al formulario de vuelta.
Bueno, acá podemos redirigir al formulario o también redirigir.
Si tenemos una lista de usuarios de registro, podemos redirigir a la lista.
En fin, acá manejamos el error y lo volvemos a enviar al formulario.
Guardamos.
Ahora recuerden, acá no estamos trabajando con pasado.
Entonces por lo tanto el ver Basin, el Heidy, pero por ejemplo sin procesar guardamos el usuario en
ese auto, hacemos un insert acá podríamos redirigir con el Heidy del usuario registrado.
Acá obtenemos el Heidy como un variable, acá inyectamos el path variable y en caso de que sea nulo
el usuario sea null lo podemos ir a buscar a las reato por el Heidy.
Entonces perfecto.
Primero o la primera vez lo cargamos la sesión y cuando se hace un refresco se actualiza nuevamente
lo obtenemos el usuario con el Heidy lo vamos a ir a buscar al hacerlo.
Entonces con legi utilizando el service fine vaya a Heidy buscar por ahí, hace la consulta, prohibi
obtiene el usuario y dice lo pasamos con el modelo attribute usuario usuario de vigen y en vez de redirigir
esto se comenta y cargamos la vista resultado con el usuario de la base dato en vez de la sesión.
Yo sería otra alternativa.
Bien, pero por ahora está perfecto.
Entonces lo vamos a revisar.
Se actualizo.
Se fijan ya no falles, no haré error, sino que redirige al formulario.
Entonces, nuevamente, por ejemplo mujer.
María.
Enviar?
Se fijan?
Ver?
Redirige.
Ningún problema, se actualizamos al formulario de regreso.
Sé que.
Bueno, hay que mucho mejor.
Continuemos la siguiente clase con estilos vostra decorar y dar estilos al formulario.