1 00:00:00,210 --> 00:00:02,580 Voy a levantar como siempre. 2 00:00:05,710 --> 00:00:09,880 Hasta el momento el formulario funciona bien, pero tiene un pequeño detalle que tenemos que solucionar. 3 00:00:09,940 --> 00:00:14,170 Por ejemplo, voy a enviar, vamos a completar con cualquier información. 4 00:00:21,850 --> 00:00:24,730 Me enviar perfecto a ese ambiento los datos. 5 00:00:24,760 --> 00:00:26,320 Pero claro, hay un pequeño detalle. 6 00:00:26,350 --> 00:00:28,990 Qué pasa si el usuario vuelve a refrescar acá? 7 00:00:29,920 --> 00:00:34,870 Bueno, si se fijan se vuelve a enviar el formulario, se reenvía y es justamente lo que hemos estado 8 00:00:34,870 --> 00:00:35,260 haciendo. 9 00:00:35,320 --> 00:00:40,570 Pero como es un curso, da lo mismo, no tiene tanta importancia, pero en un proyecto real este tipo 10 00:00:40,600 --> 00:00:46,150 cosa hay que evitar porque el usuario podría actualizar cierto continuar y se vuelven bien los datos. 11 00:00:46,180 --> 00:00:48,730 Y qué pasa si estamos trabajando con base datos con INSERT? 12 00:00:48,820 --> 00:00:52,450 Estamos guardando datos en la tabla hace rato se están duplicando. 13 00:00:52,540 --> 00:00:55,270 Cada que hace un refresh se vuelven a guardar los datos. 14 00:00:55,300 --> 00:00:59,080 Entonces queda duplicidad y eso hay que evitarlo completamente. 15 00:00:59,170 --> 00:01:02,500 Para ir finalizando esta sección de formulario lo vamos a implementar. 16 00:01:02,630 --> 00:01:07,120 Entonces, una de las cosas que se tienen que evitar es cuando se maneja el post, cuando obtenemos 17 00:01:07,120 --> 00:01:12,670 los datos del formulario para procesar, ya sea para insertar en una tabla enlace datos, o para enviar 18 00:01:12,670 --> 00:01:14,080 correo o para lo que sea. 19 00:01:14,170 --> 00:01:20,080 Siempre evitar cargar la vista, no cargar la vista, sino que tenemos que hacer un refresco, un directo, 20 00:01:20,230 --> 00:01:24,940 redirigir a otra página y cuando se redirige a otra página, una nueva petición. 21 00:01:25,030 --> 00:01:30,610 Ya cuando el usuario actualiza no se vuelve a enviar el formulario, ya que es otro rico, esa es otra 22 00:01:30,610 --> 00:01:31,000 petición. 23 00:01:31,090 --> 00:01:33,580 Entonces vamos a ir al código y tenemos que modificar. 24 00:01:33,670 --> 00:01:34,990 Nos vamos a hacer el controlador. 25 00:01:35,780 --> 00:01:39,380 Por ejemplo, en procesar en el método post acá. 26 00:01:39,590 --> 00:01:42,890 Entonces hay que evitar esto el ratón, cargar la vista. 27 00:01:43,040 --> 00:01:49,160 Entonces lo que podemos hacer es un método, un nuevo método de controlador con una petición del tipo 28 00:01:49,160 --> 00:01:51,970 get, un handler request del tipo quiet. 29 00:01:52,130 --> 00:01:58,250 Y ahí se maneja el resultado o el ver el detalle del usuario que creamos o que se registro. 30 00:01:58,310 --> 00:02:00,530 Pero no acá, sino en otro request. 31 00:02:00,590 --> 00:02:04,520 Y acá hacemos un rey directo redirigir hacia la otra ruta. 32 00:02:04,720 --> 00:02:08,840 Bueno, antes de modificar el procesar del tipo post, vamos a crear este método. 33 00:02:09,230 --> 00:02:10,160 Entonces Request mapping. 34 00:02:12,260 --> 00:02:17,240 Bueno, la ruta, por ejemplo, cualquiera puede ser resultado ver o detalle. 35 00:02:17,450 --> 00:02:21,920 En mi caso le voy a colocar, pero ahora, por supuesto, si estamos trabajando con base dato, podría 36 00:02:21,920 --> 00:02:27,560 pasar un parámetro en la ruta con el Heidy del usuario que se creó, pero como no es el caso, el usuario 37 00:02:27,560 --> 00:02:29,810 va a ser el mismo que está guardado en la sesión. 38 00:02:29,900 --> 00:02:32,720 Recuerden que más arriba tenemos anotado concesion atributos. 39 00:02:32,810 --> 00:02:37,460 Por lo tanto, este usuario está guardado en la sesión riquesa hasta que se complete, hasta que se 40 00:02:37,550 --> 00:02:40,550 invoque el método set complet de sesión status. 41 00:02:40,670 --> 00:02:46,130 Entonces esto acá lo podremos quitar de acá, lo quitamos y lo dejamos en este nuevo método para que 42 00:02:46,130 --> 00:02:51,470 así este usuario que está en el sesión Atributos esté disponible en este nuevo método. 43 00:02:54,770 --> 00:02:55,820 Por ejemplo, ver. 44 00:02:57,900 --> 00:03:03,180 Bien, entonces lo primero Proton la vista que vista está de acá. 45 00:03:05,710 --> 00:03:09,690 Y acá tengo que cambiar en vez de resultado, sería re directo. 46 00:03:11,410 --> 00:03:12,940 2 Punto es el larch. 47 00:03:13,000 --> 00:03:22,000 Siempre lo rire comienzan con Larch o Diagonal y la ruta en este caso ver entonces redirige hacia esta 48 00:03:22,000 --> 00:03:22,360 ruta. 49 00:03:22,420 --> 00:03:24,220 Por lo tanto realiza un nuevo rico. 50 00:03:24,220 --> 00:03:26,080 Esto bien y acá. 51 00:03:26,620 --> 00:03:33,850 Bueno, lo primero es pasar el título acá el título resultado effort, ya que acá vamos a manejar el 52 00:03:33,850 --> 00:03:34,340 resultado. 53 00:03:34,990 --> 00:03:36,460 Pero para eso necesitamos el modelo. 54 00:03:38,380 --> 00:03:39,490 Entonces lo pasamos acá. 55 00:03:41,580 --> 00:03:46,830 También el sesio un atributo destaca sesione status, perdón, sesiona status. 56 00:03:46,950 --> 00:03:47,820 Lo dejamos acá. 57 00:03:48,090 --> 00:03:49,590 En realidad lo cortamos acá. 58 00:03:49,680 --> 00:03:52,590 Lo eliminamos porque se maneja ya en este método. 59 00:03:52,980 --> 00:03:54,660 Acá realizamos el complet. 60 00:03:55,260 --> 00:03:57,120 Esto lo cortamos y lo dejamos acá. 61 00:03:58,730 --> 00:04:00,270 Bien, vamos a ordenar esto. 62 00:04:00,270 --> 00:04:01,770 Lo podemos quitar esto de acá. 63 00:04:02,010 --> 00:04:04,110 Esto se elimina ya que no se pasa a la vista. 64 00:04:04,350 --> 00:04:06,660 No lo estamos pasando a la vista y qué faltaría. 65 00:04:06,720 --> 00:04:09,420 Bueno, acá tenemos que enviar el usuario. 66 00:04:09,540 --> 00:04:11,070 Bueno, en realidad el usuario está en la sesión. 67 00:04:11,160 --> 00:04:17,310 En la sesión HTTP lo que tengo que hacer es inyectar este usuario acá en este método. 68 00:04:18,710 --> 00:04:20,240 Pero de dónde lo tenemos? 69 00:04:20,240 --> 00:04:21,940 Del sesión atributos acá. 70 00:04:26,590 --> 00:04:28,690 Y vamos a importar, importamos. 71 00:04:28,800 --> 00:04:31,370 Importante tiene que ser en singular sin la s. 72 00:04:32,500 --> 00:04:40,720 Sesión atributo, si se fijan acá es en singular, pero acá arriba, donde se guarda es en plural. 73 00:04:40,810 --> 00:04:47,650 Entonces indicamos que obtengamos el usuario de la sesión desde el sesiona atributos con el nombre con 74 00:04:47,650 --> 00:04:48,520 el cual lo guardamos. 75 00:04:48,580 --> 00:04:49,120 Usuario. 76 00:04:50,200 --> 00:04:51,730 Entonces acá sería usuario. 77 00:04:52,240 --> 00:04:58,870 Entonces estamos inyectando el usuario que está guardado con ese nombre en los sesen atributo en singular 78 00:04:59,170 --> 00:05:03,760 llégate, tenemos el usuario y automáticamente como está en exceso, el atributo también está en la 79 00:05:03,760 --> 00:05:04,240 vista. 80 00:05:04,720 --> 00:05:08,080 Por lo tanto, no es necesario tener que pasarlo a la vista con el modelo. 81 00:05:08,440 --> 00:05:13,840 Ya está en la vista, ya que al estar en exceso, un atributo también está en el modo del atributo, 82 00:05:13,960 --> 00:05:15,160 en la plantilla, en la vista. 83 00:05:15,250 --> 00:05:19,930 Por lo tanto, no es necesario tener que pasarlo solamente el título, aunque si queremos igual lo podemos 84 00:05:19,930 --> 00:05:22,870 pasar con el atributo usuario usuario. 85 00:05:22,960 --> 00:05:26,590 Pero en este caso da lo mismo y guardamos bien el título. 86 00:05:26,730 --> 00:05:27,430 Es todo acá. 87 00:05:27,520 --> 00:05:34,690 Lo podemos cortar en el procesar y lo dejamos acá dentro del hash errors, ya que solamente lo vamos 88 00:05:34,690 --> 00:05:37,120 a mostrar cuando ocurra un error para validar. 89 00:05:39,470 --> 00:05:44,990 Ya que después redirige, si sale todo bien, redirige a ver cómo está la sesión. 90 00:05:45,050 --> 00:05:50,660 Va a mostrar el detalle al usuario, pero en otro rico esto ahora claro, el usuario una vez que se 91 00:05:50,660 --> 00:05:53,030 envía y carga esta página se elimina. 92 00:05:53,150 --> 00:05:58,340 Acá tenemos el status set completo, se elimina de la sesión, por lo tanto, después si actualizamos 93 00:05:58,340 --> 00:06:04,220 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 94 00:06:04,310 --> 00:06:05,390 lo vamos a manejar después. 95 00:06:05,420 --> 00:06:07,040 Por ahora vamos a probar. 96 00:06:07,160 --> 00:06:09,710 Ya tengo lantado, así que vamos a revisar. 97 00:06:10,490 --> 00:06:14,270 Vamos a ir al formulario un clic enter para cargar los datos. 98 00:06:15,550 --> 00:06:16,540 Vamos a completar. 99 00:06:18,310 --> 00:06:18,960 Acá. 100 00:06:19,150 --> 00:06:19,720 12. 101 00:06:24,660 --> 00:06:25,410 Y alguna fecha? 102 00:06:26,740 --> 00:06:27,150 En pie. 103 00:06:27,700 --> 00:06:32,620 Si se fijan acá, Redirigen cambia la ruta Querelle GijÃn funciona bien. 104 00:06:32,740 --> 00:06:33,540 Hace un directo. 105 00:06:33,760 --> 00:06:36,220 Ya no estamos dentro del post, estamos dentro del yeta. 106 00:06:36,430 --> 00:06:37,540 De hecho se actualizo. 107 00:06:37,630 --> 00:06:40,970 No me pide volver, enviar formulario y eso está perfecto. 108 00:06:41,050 --> 00:06:43,090 Evitemos duplicar, por ejemplo, el insert. 109 00:06:43,180 --> 00:06:48,070 Si estamos trabajando en pasearlos o volver a procesar los datos, entonces actualizamos. 110 00:06:48,220 --> 00:06:53,050 Balcázar Un error complicaba el usuario se elimina de la sesión por el complet. 111 00:06:53,230 --> 00:06:54,160 Acá vamos a actualizar. 112 00:06:54,280 --> 00:06:54,700 Se fijan? 113 00:06:54,790 --> 00:07:00,100 Error no existe el atributo usuario en el cesion atributo por qué se completó? 114 00:07:00,220 --> 00:07:07,450 Entonces tenemos que hacer lo siguiente primero acá en sesión atributo name le damos el atributo name 115 00:07:07,540 --> 00:07:11,040 igual usuario coma y por acá recuas. 116 00:07:11,080 --> 00:07:12,880 Ayer lo dejamos en fols. 117 00:07:13,570 --> 00:07:16,840 No es requerido perfecto, pero además tenemos que validar. 118 00:07:16,990 --> 00:07:21,820 Entonces cuando se vuelve a enviar perfecto se muestra los datos, pero después actualizamos. 119 00:07:21,910 --> 00:07:25,060 No va a lanzar ese error, pero si van a ser un error de que el usuario en NULL. 120 00:07:25,450 --> 00:07:34,840 Entonces ahora podemos validar, entonces por acá valíamos IF si el nulo si es null, perfecto, lo 121 00:07:34,840 --> 00:07:35,320 manejamos. 122 00:07:35,470 --> 00:07:36,190 Qué hacemos? 123 00:07:37,100 --> 00:07:40,300 Restringimos por ejemplo, acá vamos a tener un directo 124 00:07:43,240 --> 00:07:44,560 al formulario de vuelta. 125 00:07:45,470 --> 00:07:48,790 Bueno, acá podemos redirigir al formulario o también redirigir. 126 00:07:48,850 --> 00:07:53,350 Si tenemos una lista de usuarios de registro, podemos redirigir a la lista. 127 00:07:53,440 --> 00:07:59,590 En fin, acá manejamos el error y lo volvemos a enviar al formulario. 128 00:07:59,950 --> 00:08:00,490 Guardamos. 129 00:08:00,580 --> 00:08:02,800 Ahora recuerden, acá no estamos trabajando con pasado. 130 00:08:02,890 --> 00:08:09,340 Entonces por lo tanto el ver Basin, el Heidy, pero por ejemplo sin procesar guardamos el usuario en 131 00:08:09,430 --> 00:08:14,200 ese auto, hacemos un insert acá podríamos redirigir con el Heidy del usuario registrado. 132 00:08:14,680 --> 00:08:20,590 Acá obtenemos el Heidy como un variable, acá inyectamos el path variable y en caso de que sea nulo 133 00:08:20,690 --> 00:08:24,340 el usuario sea null lo podemos ir a buscar a las reato por el Heidy. 134 00:08:24,430 --> 00:08:25,450 Entonces perfecto. 135 00:08:25,570 --> 00:08:31,540 Primero o la primera vez lo cargamos la sesión y cuando se hace un refresco se actualiza nuevamente 136 00:08:31,660 --> 00:08:35,530 lo obtenemos el usuario con el Heidy lo vamos a ir a buscar al hacerlo. 137 00:08:35,740 --> 00:08:41,770 Entonces con legi utilizando el service fine vaya a Heidy buscar por ahí, hace la consulta, prohibi 138 00:08:41,860 --> 00:08:47,350 obtiene el usuario y dice lo pasamos con el modelo attribute usuario usuario de vigen y en vez de redirigir 139 00:08:47,530 --> 00:08:52,930 esto se comenta y cargamos la vista resultado con el usuario de la base dato en vez de la sesión. 140 00:08:53,230 --> 00:08:54,640 Yo sería otra alternativa. 141 00:08:54,870 --> 00:08:56,500 Bien, pero por ahora está perfecto. 142 00:08:56,560 --> 00:08:57,610 Entonces lo vamos a revisar. 143 00:08:58,210 --> 00:08:59,110 Se actualizo. 144 00:09:00,330 --> 00:09:04,110 Se fijan ya no falles, no haré error, sino que redirige al formulario. 145 00:09:04,590 --> 00:09:06,630 Entonces, nuevamente, por ejemplo mujer. 146 00:09:10,170 --> 00:09:10,950 María. 147 00:09:20,330 --> 00:09:20,740 Enviar? 148 00:09:21,560 --> 00:09:22,100 Se fijan? 149 00:09:22,220 --> 00:09:22,700 Ver? 150 00:09:22,790 --> 00:09:23,570 Redirige. 151 00:09:23,690 --> 00:09:27,380 Ningún problema, se actualizamos al formulario de regreso. 152 00:09:27,480 --> 00:09:27,950 Sé que. 153 00:09:28,040 --> 00:09:29,390 Bueno, hay que mucho mejor. 154 00:09:29,420 --> 00:09:34,520 Continuemos la siguiente clase con estilos vostra decorar y dar estilos al formulario.