1
00:00:00,210 --> 00:00:02,940
Bien, vamos a levantar y vamos a ir al formulario.

2
00:00:04,250 --> 00:00:05,390
Porque quiero ver un tema.

3
00:00:05,630 --> 00:00:11,150
Qué pasa si quiero ver, por ejemplo, o quiero mostrar valores por defecto del país en el formulario?

4
00:00:11,270 --> 00:00:14,480
Es decir, que te seleccionado, por ejemplo, España, Chile o cualquier otro.

5
00:00:14,610 --> 00:00:18,680
Y también los roles dejar marcado por defecto el rol usuario.

6
00:00:18,740 --> 00:00:23,480
Bueno, y para eso tendríamos que en el método GET de formulario.

7
00:00:23,570 --> 00:00:29,270
Acá pasar estos valores por defecto es muy útil, por ejemplo, para pasar datos por defecto tal como

8
00:00:29,270 --> 00:00:33,340
tenemos acá el John Doe, el nombre apellido identificador.

9
00:00:33,380 --> 00:00:39,320
Pero también si queremos editar un registro, por ejemplo ir a buscar al usuario por el Heidy al Ayato

10
00:00:39,320 --> 00:00:43,520
lo obtenemos, mostramos su valores en el formulario y lo queremos modificar.

11
00:00:43,640 --> 00:00:46,370
En caso de trabajar con pasearlo por ejemplo con persistencia.

12
00:00:46,460 --> 00:00:49,070
Pero bien, acá la idea es valores por defecto.

13
00:00:49,430 --> 00:00:53,810
Entonces mi formulario, la idea de que país esté seleccionado en cualquiera, por ejemplo en Chile

14
00:00:54,200 --> 00:00:56,900
y rolee este mercado por ejemplo con usuario.

15
00:00:57,020 --> 00:00:58,160
Ve cómo lo abarcamos?

16
00:00:58,190 --> 00:00:58,850
Cómo lo hacemos?

17
00:00:59,030 --> 00:01:06,380
No vamos al código y acá en Get Mapping en el formulario usuario punto set país.

18
00:01:07,680 --> 00:01:10,620
Bien, y un pie por defecto lo tenemos, por ejemplo.

19
00:01:10,650 --> 00:01:15,180
Bueno, cualquier país nos vamos al servis de país implementé.

20
00:01:16,080 --> 00:01:18,810
Por ejemplo, Chile, pueden escoger el que quieran.

21
00:01:18,930 --> 00:01:19,620
Lo copio.

22
00:01:19,680 --> 00:01:22,020
Voy a cerrar y lo pegamos acá.

23
00:01:22,170 --> 00:01:23,340
Guardamos bien.

24
00:01:23,490 --> 00:01:27,000
Si actualizamos, hacemos un refresco.

25
00:01:27,510 --> 00:01:28,050
No pasa nada.

26
00:01:28,140 --> 00:01:30,000
Digan no se carga Chile.

27
00:01:30,270 --> 00:01:30,810
Por qué?

28
00:01:30,900 --> 00:01:34,110
Bueno, por detrás de escena el Ford va comparando.

29
00:01:34,170 --> 00:01:40,200
Cuando se despliega la lista, va comprando cada país con el objeto país que tenga el usuario, pero

30
00:01:40,200 --> 00:01:44,670
esta comparación lo hace a través del Heidy de los objetos.

31
00:01:44,910 --> 00:01:47,580
Bien, veamos el código para comprenderlo un poco mejor.

32
00:01:47,700 --> 00:01:54,330
Acá tenemos el SELECT y en el select las opciones y acá tenemos un Ford, un hit por cada país.

33
00:01:54,410 --> 00:02:01,320
Bueno, el valor es el Heidy del país y tenemos que comparar esta edic del país con el campo, con el

34
00:02:01,320 --> 00:02:02,010
campo país.

35
00:02:02,100 --> 00:02:06,260
Recordemos que el usuario tiene el atributo país y está mapeado a este atributo.

36
00:02:07,280 --> 00:02:11,540
En el controlador asignamos el país, por lo tanto, acá tenemos el objeto país.

37
00:02:11,600 --> 00:02:17,480
Pero si se fijan, es un objeto, es una instancia de país, mientras que acá el valor es Haití.

38
00:02:17,600 --> 00:02:22,610
No podemos comparar un Heidy con el objeto país de forma directa, porque lo que intenta hacer, como

39
00:02:22,610 --> 00:02:27,860
es un string, intenta comparar con la representación de String del objeto país.

40
00:02:27,950 --> 00:02:34,010
Pero el método string del objeto país es distinto a Estadi y por eso nunca se selecciona.

41
00:02:34,100 --> 00:02:40,070
Entonces lo que tengo que hacer es implementar el método to string de la clase país para que retorne

42
00:02:40,160 --> 00:02:41,710
el Heidy como un string.

43
00:02:41,900 --> 00:02:42,470
Y eso es todo.

44
00:02:42,560 --> 00:02:47,480
Entonces implementamos el método String que retorna el valor de Leidy y ahí sí que se puede comparar

45
00:02:47,870 --> 00:02:52,490
con el valor de cada Heidy de la lista por cada país.

46
00:02:52,790 --> 00:02:58,040
Entonces cuando coinciden, cuando son iguales, automáticamente el SELECT lo marca, los selecciona.

47
00:02:58,270 --> 00:02:59,920
Bien, para eso nos vamos al controlador.

48
00:03:01,030 --> 00:03:03,800
Y hacemos un click acá, un control, click.

49
00:03:04,720 --> 00:03:10,330
Y en esta clase en país, por acá abajo, con click derecho source o right.

50
00:03:11,330 --> 00:03:12,830
Marcamos tu estric?

51
00:03:13,490 --> 00:03:13,840
Ok.

52
00:03:15,230 --> 00:03:18,180
Y acá colocamos, disputo Didí.

53
00:03:19,630 --> 00:03:20,740
Quitemos el comentario.

54
00:03:21,690 --> 00:03:24,930
Pero acá retorna un string y el Heidy es del tipo Integer.

55
00:03:24,960 --> 00:03:26,320
Por lo tanto no coincide.

56
00:03:26,610 --> 00:03:27,330
Pero no importa.

57
00:03:27,390 --> 00:03:28,890
Convertimos a Estric.

58
00:03:30,080 --> 00:03:30,390
Dis.

59
00:03:30,550 --> 00:03:31,430
Punto di.

60
00:03:31,520 --> 00:03:31,880
Punto.

61
00:03:31,910 --> 00:03:39,110
Tu stink entonces va a retornar el Heidy como un string y Estadi permite a time lif marcar o seleccionar

62
00:03:39,140 --> 00:03:45,800
cuando ambos Heidy de cada elemento de la lista coincide con Leydi del país que tenemos seleccionado.

63
00:03:45,890 --> 00:03:48,660
Es decir, que tiene el usuario acá que le asignamos acá.

64
00:03:48,710 --> 00:03:53,200
Entonces compara cada país del SELECT por este país pero a través de Leidy.

65
00:03:53,910 --> 00:03:57,890
Entonces por eso tenemos que implementar el Tultepec para que lo deje seleccionado.

66
00:03:58,460 --> 00:04:02,780
Bien, ahora actualizamos y está marcado en Chile se fijan.

67
00:04:03,230 --> 00:04:04,850
Es muy importante el método toString.

68
00:04:05,000 --> 00:04:08,120
Ahora, cómo podemos implementar algo parecido con roles?

69
00:04:08,240 --> 00:04:10,370
Bueno, acá es un poco más complicado porque es un arreglo.

70
00:04:10,460 --> 00:04:15,710
Es decir, es un arreglo de roles, pero también el usuario tiene otro arreglo de roles.

71
00:04:16,220 --> 00:04:19,370
Lo primero nos vamos a controlador también.

72
00:04:22,180 --> 00:04:22,530
Set?

73
00:04:22,690 --> 00:04:23,320
Roles.

74
00:04:24,100 --> 00:04:34,150
Y acá pasamos una lista, pero bien podemos usar Arraiz Punto as list y separÃ por Koma, pasamos los

75
00:04:34,150 --> 00:04:34,540
roles.

76
00:04:34,600 --> 00:04:37,480
Por ejemplo, nos vamos a rol servis implemento.

77
00:04:39,370 --> 00:04:40,720
Y voy a pasar solamente el usuario.

78
00:04:41,060 --> 00:04:45,520
Rol usuario concedidos, lo copio, volvemos.

79
00:04:46,460 --> 00:04:47,150
Y lo pegamos acá.

80
00:04:47,960 --> 00:04:48,500
Perfecto.

81
00:04:48,570 --> 00:04:50,900
Bueno, guardamos, se actualizamos.

82
00:04:51,350 --> 00:04:54,830
No pasa nada, se fijan, no hay ningún resultado, no se marca el usuario.

83
00:04:55,220 --> 00:05:02,210
Bueno, es que tenemos que comparar una lista de los checkbox con la lista de roles del usuario.

84
00:05:02,540 --> 00:05:07,990
Nos vamos al Ventilla a formulario, nos vamos a roles y en el input por acá.

85
00:05:08,570 --> 00:05:17,120
Bueno, voy a bajar con un enter th 2 punto checked de que tengo que implementar una función un gel

86
00:05:17,480 --> 00:05:26,240
de Tenerife si peso las llaves y con el gato list usamos list@ el Halpert para trabajar con listas o

87
00:05:26,240 --> 00:05:27,210
con arreglos.

88
00:05:27,230 --> 00:05:28,820
Punto contains.

89
00:05:30,310 --> 00:05:36,940
Es decir, si esta lista que vamos a pasar por argumento acá recibe dos argumentos la lista por ejemplo

90
00:05:36,970 --> 00:05:41,110
usuario, puntos, roles, los roles del usuario.

91
00:05:41,180 --> 00:05:49,810
Si en esta lista está contenido este rol, el rol del ID de la iteración, entonces si está contenido

92
00:05:49,900 --> 00:05:50,530
este rol.

93
00:05:51,220 --> 00:05:53,590
La idea de que lo deje marcado lo marque.

94
00:05:53,860 --> 00:05:59,710
Pero también muy parecido que un país no tiene cómo comparar, no tiene cómo saber si este rol está

95
00:05:59,710 --> 00:06:00,820
dentro de esta lista.

96
00:06:01,060 --> 00:06:06,430
Pero para eso, para que se pueda comparar, tenemos que implementar el método equals en la clase error.

97
00:06:06,580 --> 00:06:08,380
Pero de esta forma vamos a guardar.

98
00:06:08,560 --> 00:06:10,240
Vamos acá al navegador.

99
00:06:10,330 --> 00:06:11,010
Actualizamos.

100
00:06:11,020 --> 00:06:12,340
Se fijan, no pasa nada.

101
00:06:12,820 --> 00:06:14,230
Entonces vámonos a la clase.

102
00:06:14,230 --> 00:06:14,550
Error.

103
00:06:16,160 --> 00:06:21,830
Entonces, cuando es una colección, iba comparando acá podemos implementar el método y es.

104
00:06:23,520 --> 00:06:25,220
Entonces Source obert right?

105
00:06:26,880 --> 00:06:28,590
Marcamos y cual puerta.

106
00:06:32,630 --> 00:06:39,890
Bueno, lo primero es comprar objeto cada objeto, es decir, de esta lista de Lizz, cada objeto.

107
00:06:40,730 --> 00:06:41,750
Con la lista.

108
00:06:42,550 --> 00:06:46,120
Con esta lista cita contenido en la lista de los usuarios.

109
00:06:50,000 --> 00:06:57,500
Entonces, acá lo primero de convertir este tipo Hoggett, que genérico a un tipo Rohr, hacemos el

110
00:06:57,500 --> 00:06:58,760
často a rol.

111
00:06:59,270 --> 00:07:02,560
Entonces, con paréntesis rol guárdanos.

112
00:07:02,720 --> 00:07:11,090
Perfecto, entonces ahora primero hay que preguntar que Leydi del objeto rol del objeto en cuestión.

113
00:07:11,150 --> 00:07:12,110
Qué estamos comparando?

114
00:07:12,320 --> 00:07:18,710
Si el Heidy sea distinto, nulo disputo Heidy, es decir, que Leydi exista.

115
00:07:19,310 --> 00:07:19,790
Perfecto.

116
00:07:19,850 --> 00:07:24,500
Si existe compramos el Heidy de este objeto del objeto en cuestión.

117
00:07:25,810 --> 00:07:26,930
Punto equals.

118
00:07:28,610 --> 00:07:34,850
Con el Heidy del rol que sea, pasando de cada objeto, rol de la lista.

119
00:07:36,390 --> 00:07:37,940
Punto Quiet Heidy.

120
00:07:40,200 --> 00:07:46,260
Entonces, en definitiva, compara el Heidy del objeto de la instancia por cada Heidy de cada rol que

121
00:07:46,260 --> 00:07:47,520
se pasa por argumento.

122
00:07:47,820 --> 00:07:49,860
En otra palabra, en la plantilla.

123
00:07:50,740 --> 00:07:51,580
Este es el error.

124
00:07:51,670 --> 00:07:52,540
Nuestra clase.

125
00:07:53,050 --> 00:07:58,330
El dice y di que se compara con cada Heidy de la lista de roles del usuario.

126
00:07:59,760 --> 00:08:00,750
Bien, estamos listos.

127
00:08:00,840 --> 00:08:01,890
Tenemos que guardar acá.

128
00:08:02,670 --> 00:08:04,920
Actualizamos y lo marco, se fijan.

129
00:08:05,040 --> 00:08:09,210
Si volvemos al código nos vamos al controlador y colocamos otro rol.

130
00:08:09,240 --> 00:08:13,380
Por ejemplo, Ross Servis simplement vamos a colocar moderador.

131
00:08:17,360 --> 00:08:18,620
Acá se para por Koma.

132
00:08:20,710 --> 00:08:26,620
Guardamos, actualizamos, se marca usuario y moderador, pero la idea dejar uno solo.

133
00:08:29,020 --> 00:08:29,980
Bien, volvamos a Roma.

134
00:08:30,730 --> 00:08:36,790
Este validacion sería la mínima, la mínima arquería, la básica, pero se recomienda siempre primero

135
00:08:36,790 --> 00:08:40,060
preguntar, por ejemplo if si 10.

136
00:08:40,420 --> 00:08:47,680
Es decir, esta misma instancia del objeto es igual a la instancia del objeto retorna mostruo.

137
00:08:50,570 --> 00:08:54,530
Es decir, se deja marcado cuando true se deja marcado cuando fols no se marca.

138
00:08:54,860 --> 00:09:00,710
Entonces compramos la instancia del objeto cuestión con cada instancia de los objetos que están pasando

139
00:09:00,710 --> 00:09:05,750
por argumento, si son iguales en instancia en referencia retorna true.

140
00:09:06,320 --> 00:09:12,440
Y también tenemos que validar que el tipo de este objeto sea también una instancia de error.

141
00:09:13,620 --> 00:09:16,650
Porque si no es instancia de rol, retornamos forzo.

142
00:09:17,160 --> 00:09:19,200
Eso también puede ser una validación extra.

143
00:09:20,760 --> 00:09:32,280
If distinto contiene aclamación paréntesis objeto instanceof de error, entonces, si no es una instancia

144
00:09:32,280 --> 00:09:35,370
error el objeto objeto que se pasa por argumento.

145
00:09:39,150 --> 00:09:39,900
Los traumas forzo.

146
00:09:40,200 --> 00:09:40,860
Perfecto.

147
00:09:41,010 --> 00:09:49,080
Ahora si es instancia Herron hacemos el cast a rol y comparamos los Heidy y eso todo lo guardamos.

148
00:09:49,230 --> 00:09:53,430
Bueno, el resultado es exactamente el mismo, pero la validación es más estricta.

149
00:09:53,670 --> 00:09:55,800
Mejor digan que ha marcado acá el usuario.

150
00:09:56,080 --> 00:09:57,600
Bueno, y también acá el país.

151
00:09:57,990 --> 00:09:59,340
Ahora sí que sí estamos listo.

152
00:09:59,490 --> 00:10:01,050
Nos vemos en la siguiente clase.
