1
00:00:00,450 --> 00:00:05,730
Entonces utilizamos el result del tipo binding result para validar de formularios, tiene errores y

2
00:00:05,730 --> 00:00:07,320
lo manejamos, lo procesamos.

3
00:00:07,500 --> 00:00:11,940
Usamos un asma para guardar los mensajes de error por cada input, por cada campo.

4
00:00:12,030 --> 00:00:17,970
Luego lo pasamos a la vista, pero como error en singular, sin ese error y retornamos la vista.

5
00:00:18,090 --> 00:00:18,750
El nombre de la vista.

6
00:00:18,780 --> 00:00:19,290
Para qué?

7
00:00:19,350 --> 00:00:23,880
Para regresar al formulario, para que el usuario pueda corregir nuevamente, pueda ver los errores,

8
00:00:23,940 --> 00:00:25,830
en qué se equivocó y volver a enviar.

9
00:00:25,890 --> 00:00:27,260
Pero bien, qué faltaría?

10
00:00:27,510 --> 00:00:32,040
Porque por el lado procesar del controlador está perfecto, faltaría la vista.

11
00:00:32,130 --> 00:00:36,720
Acá tenemos que agregar los mensajes de error por cada input utilizando el MAP.

12
00:00:36,930 --> 00:00:40,800
En este caso acá error este objeto.

13
00:00:42,480 --> 00:00:51,270
Entonces un DIF yucateca que iba Alier con TH IFF bueno, una expresión booleana, por qué hay que preguntar

14
00:00:51,270 --> 00:00:55,650
que error sea distinto en UL como siempre con signo peso.

15
00:00:58,570 --> 00:01:02,980
Bueno, por qué sería bueno, porque vamos a controlar, estamos a la vista formulario.

16
00:01:03,070 --> 00:01:04,150
Acá la estamos retornando.

17
00:01:04,240 --> 00:01:05,230
Estamos pasando el error.

18
00:01:05,290 --> 00:01:08,860
Así que en caso de falla no debería haber ningún problema.

19
00:01:09,220 --> 00:01:11,050
El objeto error no es nulo.

20
00:01:11,530 --> 00:01:12,370
Pero qué pasa acá?

21
00:01:12,670 --> 00:01:17,890
Cuando mostramos por primera vez al usuario el formulario acá en ninguna parte estamos pasando el error.

22
00:01:17,980 --> 00:01:21,850
El objeto error, por lo tanto, va a ser nulo en un objeto nulo.

23
00:01:21,910 --> 00:01:25,090
En Java no se puede invocar métodos ni atributos.

24
00:01:25,190 --> 00:01:27,010
Entonces va a dar error.

25
00:01:27,040 --> 00:01:32,080
Entonces, por eso primero tenemos que validar que el objeto error exista, sea distinto en URL en la

26
00:01:32,080 --> 00:01:38,170
plantilla solamente para cuando mostramos el formulario por primera vez al usuario antes de enviar.

27
00:01:38,320 --> 00:01:42,970
Entonces error distinto null, pero también con un APENSAR.

28
00:01:43,210 --> 00:01:47,050
Tenemos que preguntar si existe el mensaje error para el Yussef.

29
00:01:47,590 --> 00:01:52,930
Entonces acá utilizando error, recuerden que error es un map, un asma de Java.

30
00:01:53,650 --> 00:01:58,030
Entonces contiene el método contains y de contener llave

31
00:02:01,150 --> 00:02:06,430
y las comillas porque recibe un string comilla simple porque estamos en la vista en la plantilla.

32
00:02:07,150 --> 00:02:10,840
Entonces acá preguntamos si error contiene la llave Yussef n.

33
00:02:11,980 --> 00:02:12,980
Entonces acá Yousef.

34
00:02:14,650 --> 00:02:21,310
Recordemos que cuando creamos y pasamos los datos al MAP, pasamos la llave nombre campo y el valor

35
00:02:21,400 --> 00:02:21,940
el mensaje.

36
00:02:22,020 --> 00:02:26,460
Entonces estamos preguntando si existe alguna llave para el campo y USENET.

37
00:02:28,290 --> 00:02:30,930
Entonces el error es distinto, nulo y existe la llave.

38
00:02:31,260 --> 00:02:40,350
Por tanto, tiene algún error, lo mostramos con th text bueno, con signo, peso, las llaves, extrapolación

39
00:02:40,350 --> 00:02:43,350
de string error, punto.

40
00:02:43,590 --> 00:02:49,350
Justamente acá estamos accediendo a la llave y Yousef del objeto map.

41
00:02:49,620 --> 00:02:56,610
Bueno, una de la característica de Time Life es que podemos acceder a los atributos a los valores del

42
00:02:56,610 --> 00:02:58,970
map mediante el punto punto justamente.

43
00:02:59,190 --> 00:03:01,230
Bueno, también podríamos usar esta forma.

44
00:03:01,800 --> 00:03:08,730
Por ejemplo, recordemos que el map para obtener el valor, por ejemplo acá solamente para mostrar.

45
00:03:10,170 --> 00:03:14,100
Por acá tenemos el jet jet y el nombre de la llave Jet Ski.

46
00:03:14,610 --> 00:03:17,400
Entonces también podríamos usar esa forma cualquiera de las dos.

47
00:03:17,790 --> 00:03:18,930
Por ejemplo, Jet.

48
00:03:21,100 --> 00:03:26,800
Y a Kalki acá faltó comilla doble, comilla doble acá y comilla dolça.

49
00:03:28,290 --> 00:03:30,560
Entonces acá pegamos Yussef.

50
00:03:31,440 --> 00:03:32,490
Se fijan otra forma.

51
00:03:32,790 --> 00:03:35,940
Entonces un atajo es simplemente invocar el Yussef.

52
00:03:36,750 --> 00:03:37,050
Acá.

53
00:03:38,070 --> 00:03:41,640
Se fijan de forma directa, si no peso las llaves.

54
00:03:41,760 --> 00:03:42,870
Error, punto.

55
00:03:43,200 --> 00:03:44,920
La llave Elqui y.

56
00:03:46,140 --> 00:03:46,920
Con las comillas.

57
00:03:46,950 --> 00:03:54,230
Bueno, del TH text comilla doble vigen ha estado mostrando el valor el mensaje de error para el Yussef.

58
00:03:54,960 --> 00:03:56,570
Y esto mismo lo he copiar.

59
00:03:57,330 --> 00:03:58,870
Lo voy a pegar acá en password.

60
00:03:59,700 --> 00:04:01,920
Y también acá para el email.

61
00:04:02,220 --> 00:04:03,510
Bueno, solamente cambiamos acá.

62
00:04:03,600 --> 00:04:07,890
El campo, en este caso password llega también.

63
00:04:08,720 --> 00:04:12,560
Punto Pasqua de cada punto y mail.

64
00:04:14,650 --> 00:04:15,540
De acá también.

65
00:04:17,790 --> 00:04:18,770
Y estamos listos.

66
00:04:18,890 --> 00:04:20,180
Vamos a revisar.

67
00:04:20,600 --> 00:04:21,920
Levantamos como siempre.

68
00:04:27,690 --> 00:04:28,470
Bien, enviar?

69
00:04:29,310 --> 00:04:29,790
Perfecto.

70
00:04:29,880 --> 00:04:31,860
El campo Yussef no puede estar vacío.

71
00:04:31,980 --> 00:04:33,060
El password tampoco.

72
00:04:33,150 --> 00:04:34,920
El email tampoco está funcionando bien.

73
00:04:35,100 --> 00:04:36,990
Muéstrelo mensaje error por cada input.

74
00:04:37,260 --> 00:04:44,730
12 Por ejemplo, completo con Andrés y completo también el correo Andrés y dejamos el password y enviamos.

75
00:04:45,120 --> 00:04:46,740
Acá vamos a tener un error.

76
00:04:46,890 --> 00:04:48,600
Un problema que lo vamos a revisar.

77
00:04:48,870 --> 00:04:51,180
Enviamos, se fijan.

78
00:04:51,360 --> 00:04:52,440
Nos muestra los valores.

79
00:04:53,520 --> 00:04:57,210
Entonces lo ideal es que muestre el valor que tiene para poder revisarlo.

80
00:04:57,360 --> 00:05:01,380
Se fijan para poder corregir el password y llenar y no tener que volver a escribir.

81
00:05:01,390 --> 00:05:06,780
Por ejemplo Andrés ni tampoco el correo excepto enviar desaparece.

82
00:05:06,780 --> 00:05:07,460
Todo se fija.

83
00:05:07,740 --> 00:05:12,210
Entonces hay que mostrar los valores que ya tiene en el RECUESTAN el formulario, pero super simple.

84
00:05:12,300 --> 00:05:13,620
Volvamos a la vista.

85
00:05:13,890 --> 00:05:17,040
Bueno, en el input por acá tengo que agregar el valio.

86
00:05:19,090 --> 00:05:19,750
Pero usando Time.

87
00:05:21,230 --> 00:05:22,640
Sino peso y las llaves.

88
00:05:22,730 --> 00:05:22,910
Bueno.

89
00:05:23,030 --> 00:05:24,050
Y qué colocamos acá?

90
00:05:24,270 --> 00:05:26,280
Bueno, acá hay un punto importante.

91
00:05:27,170 --> 00:05:33,950
El formulario cuando valida y retornamos acá el for automáticamente pasa a la vista.

92
00:05:33,990 --> 00:05:39,080
El objeto usuario lo hace de forma automática y transparente, aunque también lo podríamos ser de forma

93
00:05:39,080 --> 00:05:39,500
manual.

94
00:05:39,920 --> 00:05:44,690
Como esto, por ejemplo, también lo podríamos hacer acá de forma manual, pero ella lo hace.

95
00:05:45,110 --> 00:05:46,160
Y con qué nombre?

96
00:05:46,250 --> 00:05:47,600
Con el mismo nombre que la clase.

97
00:05:47,960 --> 00:05:53,960
Si la clase se llama usuario, el nombre es usuario, pero todos minúscula, independientes y la U de

98
00:05:53,960 --> 00:05:55,070
la clase correcto.

99
00:05:55,100 --> 00:05:58,100
Siempre la clase comienza con mayúscula, pero independiente.

100
00:05:58,100 --> 00:06:02,300
De eso se pasa con el nombre completamente en minúscula.

101
00:06:02,870 --> 00:06:04,010
Es decir, cuando inicia minúscula.

102
00:06:04,310 --> 00:06:05,500
Ahora si son palabra compuesta.

103
00:06:05,960 --> 00:06:07,610
La otra palabra compuesta con mayúscula.

104
00:06:07,700 --> 00:06:10,040
Eso sí, pero iniciando siempre con minúscula.

105
00:06:10,160 --> 00:06:12,620
Entonces sería usuario en minúscula.

106
00:06:15,230 --> 00:06:15,860
Punto.

107
00:06:16,040 --> 00:06:16,430
Yussef.

108
00:06:17,750 --> 00:06:24,320
Recuerden que se puebla e Yusa indem en el objeto usuario, entonces así mostraremos el valor y así

109
00:06:24,320 --> 00:06:24,980
por cada uno.

110
00:06:30,150 --> 00:06:35,080
El password bueno, en realidad password nunca se ha de mostrar por seguridad, ya que el password es

111
00:06:35,080 --> 00:06:39,240
del tipo password, hízolo puntito entonce siempre el valio.

112
00:06:39,330 --> 00:06:40,200
Acá no se aplica.

113
00:06:40,320 --> 00:06:43,710
Entonces se puede omitir en realidad, pero igual dejémoslo igual.

114
00:06:43,800 --> 00:06:44,490
No se va a mostrar.

115
00:06:45,270 --> 00:06:46,410
Pero Elimelec si.

116
00:06:50,880 --> 00:06:56,490
Incluso por un tema seguridad igual se debería quitar acá, ya que ese no puntito en realidad no tiene

117
00:06:56,490 --> 00:06:57,030
sentido.

118
00:06:57,120 --> 00:07:03,210
El Valium acá en el input del password, solamente el email y el Yousef cualquiera que no sea password,

119
00:07:03,330 --> 00:07:04,380
guardamos bien.

120
00:07:04,410 --> 00:07:09,630
Entonces recuerden que el objeto usuario que se pasa acá por argumento en el método ya contiene todos

121
00:07:09,630 --> 00:07:10,110
los datos.

122
00:07:10,230 --> 00:07:15,060
Entonces, si falla, se pasa nuevamente la vista de forma automática con el nombre de la clase.

123
00:07:15,110 --> 00:07:16,620
Pero comenzando minúscula.

124
00:07:16,920 --> 00:07:19,200
Bueno, después vamos a ver cómo cambiar este nombre.

125
00:07:19,440 --> 00:07:23,070
Si cree que se llame distinto al nombre de la clase, cómo lo podemos customizar?

126
00:07:23,160 --> 00:07:27,510
Bueno, para eso podemos usar la anotación model atributo, pero después lo vemos.

127
00:07:27,540 --> 00:07:28,350
Vamos por partes.

128
00:07:28,650 --> 00:07:29,670
Ya guardamos.

129
00:07:30,570 --> 00:07:32,530
Guardamos también acá el Valium.

130
00:07:32,650 --> 00:07:33,350
TH Valium.

131
00:07:33,420 --> 00:07:37,600
Recuerden el TH de Tamblin sino peso las llaves usuario punto Yussef.

132
00:07:38,190 --> 00:07:43,950
El password no va, pero si el email volvemos a actualizar o a enviaria se fijan.

133
00:07:44,030 --> 00:07:50,340
Bueno lo vamos a volver a implementar Andrés y acá el correo en piar perfectas se fijan.

134
00:07:50,430 --> 00:07:53,550
Ahora mantienen el Yussef y también mantienen el correo.

135
00:07:53,790 --> 00:07:56,220
Solamente faltaría completar acá con cualquier cosa.

136
00:07:57,000 --> 00:07:57,690
Enviar se.

137
00:07:58,890 --> 00:07:59,580
Todo perfecto.

138
00:08:00,780 --> 00:08:02,670
Volvemos y funciona bien.

139
00:08:02,730 --> 00:08:04,470
Pero vamos a tener un problema.

140
00:08:04,560 --> 00:08:06,900
Un error que también lo vamos a solucionar muy simple.

141
00:08:07,260 --> 00:08:10,170
Si nos vamos a la plantilla formulario, pero sin enviar.

142
00:08:10,260 --> 00:08:12,840
Es decir, la plantilla formulario por primera vez.

143
00:08:12,990 --> 00:08:15,030
Entonces me voy a la ruta acá.

144
00:08:15,060 --> 00:08:16,680
VL La seleccionamos.

145
00:08:17,190 --> 00:08:18,390
Enter se vejan.

146
00:08:18,510 --> 00:08:19,140
Me funciona.

147
00:08:19,200 --> 00:08:19,800
Marca un error.

148
00:08:19,830 --> 00:08:20,400
500.

149
00:08:20,460 --> 00:08:21,030
Por qué?

150
00:08:21,180 --> 00:08:24,900
Bueno, revisemos la plantilla en la plantilla con Valium.

151
00:08:25,140 --> 00:08:28,230
Acá el Yussef Name, el Yussef Neem y el email.

152
00:08:28,440 --> 00:08:32,490
Estamos accediendo a los atributos de un objeto usuario.

153
00:08:33,180 --> 00:08:38,070
Si nos vamos a controlador acá en el form, donde se muestra por primera vez, en ninguna parte estamos

154
00:08:38,070 --> 00:08:40,050
pasando al usuario en ninguna parte.

155
00:08:40,110 --> 00:08:41,190
Entonces es null.

156
00:08:41,340 --> 00:08:46,260
Por lo tanto, como en NULL, dale error, claro, porque no se puede invocar un atributo de un objeto

157
00:08:46,260 --> 00:08:46,770
que es nulo.

158
00:08:47,680 --> 00:08:53,830
Por ejemplo, acá el atributo Yussef meum de un objeto nul del objeto usuario nul no existe.

159
00:08:53,980 --> 00:08:57,640
Entonces da un error de null pointer, excepto cómo se puede corregir.

160
00:08:57,730 --> 00:08:58,330
Muy simple.

161
00:08:58,630 --> 00:09:07,450
Acá vamos a agregar al usuario un objeto usuario por defecto punto add atributo importante.

162
00:09:07,570 --> 00:09:13,750
Le tengo que nombrar igual usuario mismo nombre con el cual lo estamos usando en la plantilla en la

163
00:09:13,750 --> 00:09:16,450
vista y acá también el valor.

164
00:09:16,560 --> 00:09:17,440
Bueno, cuál sería el valor?

165
00:09:17,830 --> 00:09:19,510
Tendríamos que crear la instancia por acá.

166
00:09:21,130 --> 00:09:27,020
Usuario usuario igual new usuario bien.

167
00:09:27,130 --> 00:09:30,730
Y pasamos acá al usuario puntico.

168
00:09:30,970 --> 00:09:31,690
Guardamos.

169
00:09:31,810 --> 00:09:32,860
Esperemos que se actualice.

170
00:09:32,920 --> 00:09:33,670
Perfecto.

171
00:09:33,850 --> 00:09:36,280
Actualizamos un refresco o f5.

172
00:09:36,370 --> 00:09:38,170
Ahora no aparece el error y ahora sí que funciona.

173
00:09:38,530 --> 00:09:40,660
Por ejemplo, enviar valida.

174
00:09:41,320 --> 00:09:42,610
Andrés enviar.

175
00:09:43,060 --> 00:09:43,840
Perfecto.

176
00:09:44,140 --> 00:09:44,890
Ya no tiene error.

177
00:09:46,230 --> 00:09:48,270
El correo tampoco.

178
00:09:48,330 --> 00:09:49,260
Solamente el password.

179
00:09:50,220 --> 00:09:51,820
Un, dos, tres, cuatro, cinco envian.

180
00:09:52,110 --> 00:09:52,770
Y funciona.

181
00:09:53,370 --> 00:09:53,910
Se fijan?

182
00:09:54,330 --> 00:09:55,320
Entonces ahora si que si.

183
00:09:56,800 --> 00:09:57,820
No marca error, bien.

184
00:09:57,850 --> 00:10:00,910
Pero todo esto se puede automatizar todavía mucho más.

185
00:10:01,090 --> 00:10:06,100
La idea era partir desde la base, creando las validaciones un poco manual de forma manual.

186
00:10:06,190 --> 00:10:06,520
En fin.

187
00:10:06,640 --> 00:10:11,110
Pero la siguiente clase vamos a tratar de automatizar un poco más este tema.

188
00:10:11,170 --> 00:10:16,120
Por ejemplo, que el mensaje de error se pasen de forma automática a la vista a la plantilla de timeline.

189
00:10:16,420 --> 00:10:17,890
Y esto lo podríamos quitar.

190
00:10:18,370 --> 00:10:19,420
Tendremos mucho menos código.

191
00:10:19,480 --> 00:10:20,770
Bueno, en realidad es todo acá.

192
00:10:21,190 --> 00:10:22,270
Lo podríamos quitar.

193
00:10:22,390 --> 00:10:23,560
Quería mucho menos código.

194
00:10:23,950 --> 00:10:34,420
En fin, también campear los Baley, los TH Beaulieu y el Name You Sennet por una etiqueta, un atributo

195
00:10:34,420 --> 00:10:37,020
de time life, TH Field o campo.

196
00:10:37,150 --> 00:10:38,470
Pero bueno, lo vemos la siguiente clase.

197
00:10:38,530 --> 00:10:40,210
Pero antes terminar, quiero ver un detalle.

198
00:10:41,410 --> 00:10:44,980
Qué pasa si quiero que se llame distinto usuario en la vista?

199
00:10:45,040 --> 00:10:52,450
Por ejemplo, en vez de usuario, acá le ponemos user, se fijan user acá Yussef.

200
00:10:53,430 --> 00:10:54,060
No, cierto?

201
00:10:54,090 --> 00:10:54,420
Acá.

202
00:10:56,310 --> 00:10:57,330
Guardamos, se fijan?

203
00:10:57,790 --> 00:10:58,710
Bueno, qué pasa?

204
00:10:58,800 --> 00:10:59,820
Cómo lo podemos cambiar eso?

205
00:11:00,240 --> 00:11:03,300
Bueno, lo primero, obviamente acá también hay que cambiar el nombre.

206
00:11:04,730 --> 00:11:10,740
Sé, pero acá el problema que se pasa de forma automática con el nombre de la clase en caso de error.

207
00:11:11,360 --> 00:11:17,750
Entonces se puede cambiar con la anotación model atributo porque ya tenemos Modell atributo.

208
00:11:19,650 --> 00:11:20,520
Inculcamos Yussef.

209
00:11:21,060 --> 00:11:21,720
Así de simple.

210
00:11:21,900 --> 00:11:24,060
Y ahora se pasa con ese nombre a la plantilla.

211
00:11:24,210 --> 00:11:24,870
Guardamos.

212
00:11:24,990 --> 00:11:28,410
Recuerden que acá estamos pasando el usuario, pero en la otra vista han resultado.

213
00:11:28,420 --> 00:11:29,610
Así que da lo mismo.

214
00:11:29,910 --> 00:11:34,980
Lo que importa es la vista formulario el Yussef bien, hacemos un reflejo.

215
00:11:35,040 --> 00:11:37,410
Funciona, funciona.

216
00:11:39,170 --> 00:11:39,950
Funciona.

217
00:11:41,210 --> 00:11:41,780
Se fijan?

218
00:11:42,020 --> 00:11:44,090
Lo mismo, pero con un nombre distinto.

219
00:11:47,260 --> 00:11:50,530
Recuerden, ya saben para qué sirve el Modell atributo acá.

220
00:11:51,750 --> 00:11:56,820
Para indicar el nombre con el cual se pasa la vida de forma automática en caso de que falle la validación.

221
00:11:57,120 --> 00:11:58,620
Pero bien lo deja como estaba.

222
00:11:58,890 --> 00:12:01,260
Usted lo puede dejar así o lo pueden comentar como quieran.

223
00:12:05,740 --> 00:12:06,430
Guardamos.

224
00:12:07,440 --> 00:12:08,820
Y también acá.

225
00:12:09,850 --> 00:12:11,620
En vez de user es usuario.

226
00:12:12,340 --> 00:12:13,060
Guardamos.

227
00:12:14,210 --> 00:12:15,170
Ya, ahora sí que sí.

228
00:12:15,290 --> 00:12:16,800
Nos vemos en la siguiente clase.
