1
00:00:00,180 --> 00:00:02,810
Bien, vamos a continuar con un ejemplo de este bozes.

2
00:00:02,940 --> 00:00:09,270
La idea es que el usuario también puede tener roles cuando se registra o en el formulario poder seleccionar

3
00:00:09,360 --> 00:00:11,950
los roles al cual va a pertenecer este usuario.

4
00:00:12,000 --> 00:00:17,490
Por ejemplo, administrador, pero también podría ser moderador o también usuario usuario normal.

5
00:00:17,550 --> 00:00:19,650
Pero bien, la idea es que puede tener más de un rol.

6
00:00:19,740 --> 00:00:22,290
Entonces, si tiene que manejar como un arreglo o una lista.

7
00:00:22,350 --> 00:00:28,710
Bien, acá cerré todos los archivos y clases anteriores que teníamos respecto a países y dije solamente

8
00:00:28,710 --> 00:00:30,540
lo principal el controlador.

9
00:00:30,630 --> 00:00:33,150
El formulario, resultado y usuario.

10
00:00:33,330 --> 00:00:34,530
Nos vamos a ir al usuario.

11
00:00:34,650 --> 00:00:39,480
Vamos a crear un nuevo tributo para los roles del tipo list.

12
00:00:40,050 --> 00:00:41,550
Primero, del tipo String.

13
00:00:42,090 --> 00:00:44,040
Roles importábamos list.

14
00:00:45,730 --> 00:00:46,660
De ya útil.

15
00:00:48,380 --> 00:00:50,840
Perfecto, ahora tenemos que validar roles.

16
00:00:50,950 --> 00:00:57,380
Bueno, cómo se valida una lista también con Not Empty, ese que el arreglo o la lista no puede ser

17
00:00:57,380 --> 00:00:57,830
vacía.

18
00:00:57,860 --> 00:00:59,180
Tiene que tener elementos.

19
00:00:59,240 --> 00:01:06,860
Por lo tanto, no, empty no solamente sirve para string, sino también para calcular el link o el largo

20
00:01:06,980 --> 00:01:09,680
o el 6 de una lista o un arreglo.

21
00:01:09,860 --> 00:01:12,760
Es decir, que contenga elementos not empty.

22
00:01:12,950 --> 00:01:13,160
Bien.

23
00:01:13,280 --> 00:01:15,600
Y también como siempre gué transceptor.

24
00:01:15,830 --> 00:01:17,210
Entonces bajamos al final.

25
00:01:20,720 --> 00:01:22,730
De setter marcamos todos.

26
00:01:23,570 --> 00:01:26,210
Perfecto, ya tenemos listo usuario, qué faltaría.

27
00:01:26,280 --> 00:01:32,780
Bueno, datos de ejemplo con el model atributo no sé, por acá o por acá, mejor

28
00:01:37,370 --> 00:01:46,820
le damos un nombre, por ejemplo lista, roles o roles, pero indicamos que sea del tipo string, es

29
00:01:46,820 --> 00:01:48,740
decir, un arreglo de roles.

30
00:01:48,800 --> 00:01:50,200
Pero estos roles del tipo string.

31
00:01:50,450 --> 00:01:55,520
Bueno, después lo vemos como sería con una clase así como lo hicimos con país, pero por ahora del

32
00:01:55,520 --> 00:01:56,060
tipo string.

33
00:01:57,770 --> 00:02:01,640
Entonces Public retorna una lista de String.

34
00:02:07,370 --> 00:02:13,490
Esta vez, en vez de usar array hash list, lo vamos a hacer con ArrayList de forma directa, de forma

35
00:02:13,490 --> 00:02:13,880
nativa.

36
00:02:14,450 --> 00:02:22,370
Entonces el tipo list string, aunque lo mismo es solamente para variar, nada más roles.

37
00:02:25,940 --> 00:02:27,530
Importamos ArrayList.

38
00:02:29,810 --> 00:02:31,040
Bien, voy a subir.

39
00:02:34,070 --> 00:02:37,910
Bien, acá tenemos entonces esta lista de roles del tipo String.

40
00:02:38,360 --> 00:02:43,380
Entonces ahora tenemos que agregar en roles con el método ADD los roles punto.

41
00:02:43,460 --> 00:02:43,850
Add.

42
00:02:45,410 --> 00:02:49,080
Del tipo String que vamos a usar mayúscula.

43
00:02:49,160 --> 00:02:49,760
Rol.

44
00:02:49,870 --> 00:02:56,000
Guión bajo admin, que es la forma en que se registran o se guardan los roles con Spring Security.

45
00:02:56,090 --> 00:03:00,680
Bueno, eso después lo vamos a ver más adelante, pero por ahora vamos a mantener esta misma.

46
00:03:00,740 --> 00:03:03,440
No me criatura un rol de un bajo admin.

47
00:03:04,580 --> 00:03:07,940
Voy a copiar y lo pegamos unas dos veces más.

48
00:03:09,170 --> 00:03:11,450
Por ejemplo acá yo user.

49
00:03:14,520 --> 00:03:18,480
Moderador o moderador lo puedes colocar en español, en inglés.

50
00:03:18,540 --> 00:03:19,670
En fin, da igual.

51
00:03:20,040 --> 00:03:21,030
Y qué retornamos?

52
00:03:21,420 --> 00:03:22,650
Roles esta lista?

53
00:03:25,830 --> 00:03:32,190
Bueno, recuerden lo que se retorna en este método, en este list de Streak, se guarda con este nombre

54
00:03:32,280 --> 00:03:32,940
en la vista.

55
00:03:33,210 --> 00:03:37,230
Por lo tanto, en nuestra plantilla en formulario lo usamos con este nombre.

56
00:03:37,800 --> 00:03:42,490
Nos vamos al formulario y vamos a crear nuestro campo, rol o roles en Rondeau.

57
00:03:43,360 --> 00:03:43,500
Bien.

58
00:03:43,590 --> 00:03:45,300
Voy a copiar identificador.

59
00:03:46,940 --> 00:03:58,910
Y lo pegamos acá entre país identificar, pegamos renombrados roles, la cacería, roles Estadi lo vamos

60
00:03:58,910 --> 00:03:59,390
a quitar.

61
00:03:59,510 --> 00:04:03,050
Por ahora nos quitamos y está mapeado al campo.

62
00:04:03,200 --> 00:04:05,990
Roles, Alfieri, roles.

63
00:04:06,140 --> 00:04:09,680
Es decir, al atributo que tenemos acá más arriba.

64
00:04:10,730 --> 00:04:11,330
Roles.

65
00:04:14,110 --> 00:04:16,120
Hice válida esta lista?

66
00:04:16,270 --> 00:04:16,840
Roles.

67
00:04:20,990 --> 00:04:22,550
El campo roles bien.

68
00:04:22,610 --> 00:04:25,640
Qué faltaría este forta acá lo vamos a quitar.

69
00:04:25,730 --> 00:04:35,180
No es necesario cambiar el tipo acá en vez de texto sería checkbox, pero acá tenemos uno solo.

70
00:04:35,450 --> 00:04:38,420
La idea es tener un check box por cada rol.

71
00:04:38,780 --> 00:04:43,850
Es decir, por ejemplo, si tenemos acá tres roles, bueno, son tres checkbox.

72
00:04:44,300 --> 00:04:51,170
Por lo tanto, de alguna forma tenemos que iterar y repetir este input checkbox con este mapping fiel

73
00:04:51,260 --> 00:04:51,830
a roles.

74
00:04:53,140 --> 00:04:55,740
Bueno, podríamos iterar, por ejemplo, el TIB.

75
00:04:55,930 --> 00:04:59,080
Es decir, que este div contenedor se repita por cada rol.

76
00:04:59,230 --> 00:05:00,970
Por lo tanto, se repetir el input.

77
00:05:02,350 --> 00:05:12,100
Entonces, con un th izz acá vamos a repetir rol nuestra variable del for o del foreach, si no peso

78
00:05:12,160 --> 00:05:13,930
las llaves y la fuente.

79
00:05:14,080 --> 00:05:17,290
El arreglo que queremos e iterar, bueno, lo tenemos acá.

80
00:05:18,070 --> 00:05:21,480
Se guarda en este nombre Lyta Roles estric 12.

81
00:05:21,490 --> 00:05:25,410
Copiamos, pegamos y tiramos por Carrón.

82
00:05:25,540 --> 00:05:30,820
Entonces por cada rol se va a mapear a roles que es una lista.

83
00:05:31,030 --> 00:05:33,460
Pero qué valor t h valio?

84
00:05:34,570 --> 00:05:41,860
Bueno, signo, peso y las llaves rol rol corresponde a cada rol del foro.

85
00:05:42,100 --> 00:05:43,420
Entonces, por qué iteración?

86
00:05:43,750 --> 00:05:51,640
Pasamos el rol como valor y este rol como valor se va a pasar o se asigna como elemento al campo?

87
00:05:51,640 --> 00:05:52,720
Roles al fiel?

88
00:05:52,960 --> 00:05:54,820
Recuerden que es un arreglo, es una lista.

89
00:05:54,940 --> 00:05:59,680
Entonces de forma automática por debajo es Brink va a tomar este valor y se lo pasa.

90
00:05:59,680 --> 00:06:04,150
Se lo asigna con el método Add a esta lista que tenemos acá.

91
00:06:05,250 --> 00:06:06,450
De roles.

92
00:06:06,510 --> 00:06:14,220
En realidad, Strength va a guardar los nombres de roles en esta lista y solamente faltaría mostrar

93
00:06:14,610 --> 00:06:16,260
una etiqueta, un label.

94
00:06:18,710 --> 00:06:23,300
Es decir, que muestre en nombre del rol nada más una etiqueta que muestre el nombre rol, entonces

95
00:06:23,360 --> 00:06:25,430
th 2.y text.

96
00:06:26,270 --> 00:06:27,620
Y cómo estamos dentro del for?

97
00:06:27,710 --> 00:06:30,590
Estamos dentro del div que Citera estamos dentro.

98
00:06:30,680 --> 00:06:34,130
Acá colocamos también el nombre rol para poder mostrar.

99
00:06:35,710 --> 00:06:42,230
Entonces esto es lo que se muestra en el label y esto es lo que se envía al controlador, a spring,

100
00:06:42,320 --> 00:06:42,770
al back.

101
00:06:43,010 --> 00:06:45,860
Entonces en pie, esto se pasa a esta lista.

102
00:06:46,710 --> 00:06:51,540
Y esto se repite por cada rol, entonces, por cada iteración, por cada rol, se repite.

103
00:06:52,380 --> 00:06:53,100
Guardamos.

104
00:06:53,700 --> 00:06:55,400
Nos vamos ahora a resultado?

105
00:06:56,880 --> 00:06:58,080
Pero es una lista.

106
00:06:58,380 --> 00:07:04,380
Entonces, en vez de mostrarlo NT o Helí, podemos tener otro o el Helí acá.

107
00:07:06,390 --> 00:07:07,080
Roles.

108
00:07:11,560 --> 00:07:11,800
Bien.

109
00:07:13,470 --> 00:07:14,760
Íbamos acá a Itera.

110
00:07:14,940 --> 00:07:17,040
Entonces también con un th it

111
00:07:21,660 --> 00:07:27,930
usuario punto roles no se queda, mostramos los roles que le asignamos al usuario rol

112
00:07:30,810 --> 00:07:37,830
del que mostramos el rol en nombre rol por cada uno que seleccionamos en los checkbox y está molesto.

113
00:07:38,550 --> 00:07:43,500
Bueno, podríamos ordenar con click Derecho Source formato perfecto acá.

114
00:07:46,290 --> 00:07:48,790
Bien, guardamos y estamos listos, vamos a revisar.

115
00:07:48,910 --> 00:07:51,160
Nos vamos a formulario, levantamos.

116
00:07:54,860 --> 00:08:01,910
Bien, bueno, ahí tenemos roles con admin, rol, user, moderador, en fin, vamos a, por ejemplo,

117
00:08:01,910 --> 00:08:02,450
seleccionar.

118
00:08:02,510 --> 00:08:07,370
Bueno, pero antes que nada probemos la validación sin seleccionar nada, simplemente enviar.

119
00:08:07,760 --> 00:08:08,280
Perfecto.

120
00:08:08,390 --> 00:08:09,570
El campo es requerido.

121
00:08:09,620 --> 00:08:16,220
Por lo tanto, si seleccionamos Admin, por ejemplo y moderador y volvemos a enviar, debería desaparecer.

122
00:08:16,310 --> 00:08:17,090
Ahí desapareció.

123
00:08:17,210 --> 00:08:18,530
Por lo tanto, está valiendo bien.

124
00:08:19,100 --> 00:08:26,750
Vamos a seleccionar, por ejemplo, Argentina bueno nombre el Yussef con siempre una clave el correo

125
00:08:27,260 --> 00:08:31,640
y uno cuenta, por ejemplo 9 una fecha anterior.

126
00:08:33,430 --> 00:08:35,200
Por ejemplo, por acá.

127
00:08:36,120 --> 00:08:40,620
Ah, y faltó identificador identificador son dos dígitos, el primero.

128
00:08:40,920 --> 00:08:41,490
Perfecto.

129
00:08:41,580 --> 00:08:42,240
Ahora sí que sí.

130
00:08:42,360 --> 00:08:43,050
Enviar.

131
00:08:43,590 --> 00:08:44,310
Perfecto.

132
00:08:44,520 --> 00:08:47,190
Todos los datos, roles admin y moderador.

133
00:08:47,370 --> 00:08:49,260
Es decir, funcionando bien, bien.

134
00:08:49,410 --> 00:08:53,280
Voy a hacer un clic acá enter para actualizar ahora.

135
00:08:53,370 --> 00:08:54,330
Bueno, faltaría.

136
00:08:54,330 --> 00:09:01,110
Quizás si hacemos un clip, por ejemplo, en el nombre del rol que se marque acá de forma automática

137
00:09:01,320 --> 00:09:07,260
sin tener que hacer clic en el Tepes, sino que también podemos hacer clic en el leiv, en la etiqueta

138
00:09:07,620 --> 00:09:11,520
y para eso podemos utilizar for el atributo for del Laver.

139
00:09:11,730 --> 00:09:19,050
Bien, nos vamos a formulario y acá en el label de cada rol, de cada iteración, de cada checkbox,

140
00:09:19,170 --> 00:09:22,560
vamos a agregar el foro con TH Fore.

141
00:09:23,550 --> 00:09:29,700
Bueno, recuerden que el for da una funcionalidad o característica de usabilidad, nada más.

142
00:09:29,790 --> 00:09:36,360
Es decir, que hacer un click en el label automáticamente se posicione el cursor o marque en este caso

143
00:09:36,450 --> 00:09:37,170
el checkbox.

144
00:09:37,380 --> 00:09:37,920
Nada más.

145
00:09:38,140 --> 00:09:42,330
Bien, el problema que acá tengo que colocar los saidi de cada campo.

146
00:09:42,630 --> 00:09:46,950
Yeap, pero los saidi de campo se generan de forma automática.

147
00:09:47,040 --> 00:09:54,030
Por ejemplo, si vemos el código fuente, selecciono ver código fuente por acá o inspeccionar.

148
00:09:55,390 --> 00:10:01,450
Acá vemos que tiene por cada input un Heidy acá el Heidy 3 en este caso.

149
00:10:02,440 --> 00:10:05,020
Acá tiene Leydi dos Heidy igual.

150
00:10:05,080 --> 00:10:05,770
Rol?

151
00:10:05,890 --> 00:10:06,430
Roles.

152
00:10:06,490 --> 00:10:06,910
2.

153
00:10:07,300 --> 00:10:08,800
Y acá roles.

154
00:10:08,860 --> 00:10:09,250
1.

155
00:10:09,340 --> 00:10:09,700
Roles.

156
00:10:09,700 --> 00:10:10,000
2.

157
00:10:10,090 --> 00:10:10,420
Roles.

158
00:10:10,440 --> 00:10:10,810
3.

159
00:10:10,990 --> 00:10:15,070
Entonces la idea de que en el label acaudilla for roles 3.

160
00:10:15,250 --> 00:10:16,660
For roles 2.

161
00:10:16,870 --> 00:10:18,400
For roles 1.

162
00:10:18,490 --> 00:10:21,310
Pero que lo haga de forma automática tal como genero esto.

163
00:10:21,310 --> 00:10:23,200
SAIDI Bueno, cómo lo podemos hacer?

164
00:10:23,290 --> 00:10:31,810
Es con un helper, un objeto propio de Tamlin, el helper a IDIS sino peso las llaves y recuerden con

165
00:10:31,810 --> 00:10:39,010
gato kelpers hay dis punto previo, pero solamente se abrevia en pref.

166
00:10:39,100 --> 00:10:40,140
Con recortÃ pref.

167
00:10:40,240 --> 00:10:41,680
De anterior pref.

168
00:10:41,980 --> 00:10:49,180
Los paréntesis de que es un método y qué colocamos el atributo roles.

169
00:10:49,900 --> 00:10:53,020
El field que tenemos mapeado entonces.

170
00:10:53,110 --> 00:10:58,780
Bueno, bueno, con esto obtenemos el último Heidy generado en los checkbox en la iteración.

171
00:10:59,110 --> 00:11:02,350
Por ejemplo acá tenemos el input acá si no el 2.

172
00:11:02,410 --> 00:11:05,740
Por ejemplo acá coloca el roles 2.

173
00:11:05,920 --> 00:11:13,150
Si estamos en roles 3 bueno en el input asigna roles 3 para Leydi y obtenemos el último va a colocar

174
00:11:13,240 --> 00:11:14,260
roles 3.

175
00:11:14,380 --> 00:11:18,160
Se fijan entonces de esta forma lo hacemos de forma automática.

176
00:11:18,610 --> 00:11:19,330
Guardamos.

177
00:11:21,570 --> 00:11:23,300
Vamos a probar, refrescamos.

178
00:11:23,790 --> 00:11:32,160
Se fijan ahora el label en el código fuente aparece Fore roles 3 para el Heidy Roles 3 y así por cada

179
00:11:32,160 --> 00:11:35,370
uno roles 2 para el Heidy Roles 2.

180
00:11:35,880 --> 00:11:37,350
Entonces mapea el for.

181
00:11:38,170 --> 00:11:43,710
Con el Heidy ya sí, con cada uno roles 1 roles uno bien.

182
00:11:43,810 --> 00:11:46,480
Acá se generan campo idén ya que no tiene mucha importancia.

183
00:11:46,480 --> 00:11:52,170
Esto lo maneja tendi por debajo el given guión bajo roles con Balu on.

184
00:11:52,480 --> 00:11:53,500
Eso lo maneja por debajo.

185
00:11:53,590 --> 00:11:59,370
Después, para poder ir a asignar los roles según seleccionemos o no en el atributo roles.

186
00:11:59,800 --> 00:12:01,960
Pero bien, eso da lo mismo.

187
00:12:02,500 --> 00:12:03,460
Voy a cerrar acá.

188
00:12:04,800 --> 00:12:10,950
Entonces, ahora si hago clic, por ejemplo, en el label, se marca, se fijan, se selecciona y está

189
00:12:10,950 --> 00:12:11,420
molesto.

190
00:12:12,420 --> 00:12:14,970
Bien, vamos a probar por última vez.

191
00:12:16,830 --> 00:12:17,450
Perú.

192
00:12:28,640 --> 00:12:29,150
Enviar?

193
00:12:29,900 --> 00:12:30,470
Perfecto.

194
00:12:30,590 --> 00:12:32,060
Ahí está la treboles seleccionada.

195
00:12:32,150 --> 00:12:32,780
Nada más.

196
00:12:32,870 --> 00:12:34,460
Nos vemos en la siguiente clase.
