Bien, vamos a continuar con un ejemplo de este bozes.
La idea es que el usuario también puede tener roles cuando se registra o en el formulario poder seleccionar
los roles al cual va a pertenecer este usuario.
Por ejemplo, administrador, pero también podría ser moderador o también usuario usuario normal.
Pero bien, la idea es que puede tener más de un rol.
Entonces, si tiene que manejar como un arreglo o una lista.
Bien, acá cerré todos los archivos y clases anteriores que teníamos respecto a países y dije solamente
lo principal el controlador.
El formulario, resultado y usuario.
Nos vamos a ir al usuario.
Vamos a crear un nuevo tributo para los roles del tipo list.
Primero, del tipo String.
Roles importábamos list.
De ya útil.
Perfecto, ahora tenemos que validar roles.
Bueno, cómo se valida una lista también con Not Empty, ese que el arreglo o la lista no puede ser
vacía.
Tiene que tener elementos.
Por lo tanto, no, empty no solamente sirve para string, sino también para calcular el link o el largo
o el 6 de una lista o un arreglo.
Es decir, que contenga elementos not empty.
Bien.
Y también como siempre gué transceptor.
Entonces bajamos al final.
De setter marcamos todos.
Perfecto, ya tenemos listo usuario, qué faltaría.
Bueno, datos de ejemplo con el model atributo no sé, por acá o por acá, mejor
le damos un nombre, por ejemplo lista, roles o roles, pero indicamos que sea del tipo string, es
decir, un arreglo de roles.
Pero estos roles del tipo string.
Bueno, después lo vemos como sería con una clase así como lo hicimos con país, pero por ahora del
tipo string.
Entonces Public retorna una lista de String.
Esta vez, en vez de usar array hash list, lo vamos a hacer con ArrayList de forma directa, de forma
nativa.
Entonces el tipo list string, aunque lo mismo es solamente para variar, nada más roles.
Importamos ArrayList.
Bien, voy a subir.
Bien, acá tenemos entonces esta lista de roles del tipo String.
Entonces ahora tenemos que agregar en roles con el método ADD los roles punto.
Add.
Del tipo String que vamos a usar mayúscula.
Rol.
Guión bajo admin, que es la forma en que se registran o se guardan los roles con Spring Security.
Bueno, eso después lo vamos a ver más adelante, pero por ahora vamos a mantener esta misma.
No me criatura un rol de un bajo admin.
Voy a copiar y lo pegamos unas dos veces más.
Por ejemplo acá yo user.
Moderador o moderador lo puedes colocar en español, en inglés.
En fin, da igual.
Y qué retornamos?
Roles esta lista?
Bueno, recuerden lo que se retorna en este método, en este list de Streak, se guarda con este nombre
en la vista.
Por lo tanto, en nuestra plantilla en formulario lo usamos con este nombre.
Nos vamos al formulario y vamos a crear nuestro campo, rol o roles en Rondeau.
Bien.
Voy a copiar identificador.
Y lo pegamos acá entre país identificar, pegamos renombrados roles, la cacería, roles Estadi lo vamos
a quitar.
Por ahora nos quitamos y está mapeado al campo.
Roles, Alfieri, roles.
Es decir, al atributo que tenemos acá más arriba.
Roles.
Hice válida esta lista?
Roles.
El campo roles bien.
Qué faltaría este forta acá lo vamos a quitar.
No es necesario cambiar el tipo acá en vez de texto sería checkbox, pero acá tenemos uno solo.
La idea es tener un check box por cada rol.
Es decir, por ejemplo, si tenemos acá tres roles, bueno, son tres checkbox.
Por lo tanto, de alguna forma tenemos que iterar y repetir este input checkbox con este mapping fiel
a roles.
Bueno, podríamos iterar, por ejemplo, el TIB.
Es decir, que este div contenedor se repita por cada rol.
Por lo tanto, se repetir el input.
Entonces, con un th izz acá vamos a repetir rol nuestra variable del for o del foreach, si no peso
las llaves y la fuente.
El arreglo que queremos e iterar, bueno, lo tenemos acá.
Se guarda en este nombre Lyta Roles estric 12.
Copiamos, pegamos y tiramos por Carrón.
Entonces por cada rol se va a mapear a roles que es una lista.
Pero qué valor t h valio?
Bueno, signo, peso y las llaves rol rol corresponde a cada rol del foro.
Entonces, por qué iteración?
Pasamos el rol como valor y este rol como valor se va a pasar o se asigna como elemento al campo?
Roles al fiel?
Recuerden que es un arreglo, es una lista.
Entonces de forma automática por debajo es Brink va a tomar este valor y se lo pasa.
Se lo asigna con el método Add a esta lista que tenemos acá.
De roles.
En realidad, Strength va a guardar los nombres de roles en esta lista y solamente faltaría mostrar
una etiqueta, un label.
Es decir, que muestre en nombre del rol nada más una etiqueta que muestre el nombre rol, entonces
th 2.y text.
Y cómo estamos dentro del for?
Estamos dentro del div que Citera estamos dentro.
Acá colocamos también el nombre rol para poder mostrar.
Entonces esto es lo que se muestra en el label y esto es lo que se envía al controlador, a spring,
al back.
Entonces en pie, esto se pasa a esta lista.
Y esto se repite por cada rol, entonces, por cada iteración, por cada rol, se repite.
Guardamos.
Nos vamos ahora a resultado?
Pero es una lista.
Entonces, en vez de mostrarlo NT o Helí, podemos tener otro o el Helí acá.
Roles.
Bien.
Íbamos acá a Itera.
Entonces también con un th it
usuario punto roles no se queda, mostramos los roles que le asignamos al usuario rol
del que mostramos el rol en nombre rol por cada uno que seleccionamos en los checkbox y está molesto.
Bueno, podríamos ordenar con click Derecho Source formato perfecto acá.
Bien, guardamos y estamos listos, vamos a revisar.
Nos vamos a formulario, levantamos.
Bien, bueno, ahí tenemos roles con admin, rol, user, moderador, en fin, vamos a, por ejemplo,
seleccionar.
Bueno, pero antes que nada probemos la validación sin seleccionar nada, simplemente enviar.
Perfecto.
El campo es requerido.
Por lo tanto, si seleccionamos Admin, por ejemplo y moderador y volvemos a enviar, debería desaparecer.
Ahí desapareció.
Por lo tanto, está valiendo bien.
Vamos a seleccionar, por ejemplo, Argentina bueno nombre el Yussef con siempre una clave el correo
y uno cuenta, por ejemplo 9 una fecha anterior.
Por ejemplo, por acá.
Ah, y faltó identificador identificador son dos dígitos, el primero.
Perfecto.
Ahora sí que sí.
Enviar.
Perfecto.
Todos los datos, roles admin y moderador.
Es decir, funcionando bien, bien.
Voy a hacer un clic acá enter para actualizar ahora.
Bueno, faltaría.
Quizás si hacemos un clip, por ejemplo, en el nombre del rol que se marque acá de forma automática
sin tener que hacer clic en el Tepes, sino que también podemos hacer clic en el leiv, en la etiqueta
y para eso podemos utilizar for el atributo for del Laver.
Bien, nos vamos a formulario y acá en el label de cada rol, de cada iteración, de cada checkbox,
vamos a agregar el foro con TH Fore.
Bueno, recuerden que el for da una funcionalidad o característica de usabilidad, nada más.
Es decir, que hacer un click en el label automáticamente se posicione el cursor o marque en este caso
el checkbox.
Nada más.
Bien, el problema que acá tengo que colocar los saidi de cada campo.
Yeap, pero los saidi de campo se generan de forma automática.
Por ejemplo, si vemos el código fuente, selecciono ver código fuente por acá o inspeccionar.
Acá vemos que tiene por cada input un Heidy acá el Heidy 3 en este caso.
Acá tiene Leydi dos Heidy igual.
Rol?
Roles.
2.
Y acá roles.
1.
Roles.
2.
Roles.
3.
Entonces la idea de que en el label acaudilla for roles 3.
For roles 2.
For roles 1.
Pero que lo haga de forma automática tal como genero esto.
SAIDI Bueno, cómo lo podemos hacer?
Es con un helper, un objeto propio de Tamlin, el helper a IDIS sino peso las llaves y recuerden con
gato kelpers hay dis punto previo, pero solamente se abrevia en pref.
Con recortÃ pref.
De anterior pref.
Los paréntesis de que es un método y qué colocamos el atributo roles.
El field que tenemos mapeado entonces.
Bueno, bueno, con esto obtenemos el último Heidy generado en los checkbox en la iteración.
Por ejemplo acá tenemos el input acá si no el 2.
Por ejemplo acá coloca el roles 2.
Si estamos en roles 3 bueno en el input asigna roles 3 para Leydi y obtenemos el último va a colocar
roles 3.
Se fijan entonces de esta forma lo hacemos de forma automática.
Guardamos.
Vamos a probar, refrescamos.
Se fijan ahora el label en el código fuente aparece Fore roles 3 para el Heidy Roles 3 y así por cada
uno roles 2 para el Heidy Roles 2.
Entonces mapea el for.
Con el Heidy ya sí, con cada uno roles 1 roles uno bien.
Acá se generan campo idén ya que no tiene mucha importancia.
Esto lo maneja tendi por debajo el given guión bajo roles con Balu on.
Eso lo maneja por debajo.
Después, para poder ir a asignar los roles según seleccionemos o no en el atributo roles.
Pero bien, eso da lo mismo.
Voy a cerrar acá.
Entonces, ahora si hago clic, por ejemplo, en el label, se marca, se fijan, se selecciona y está
molesto.
Bien, vamos a probar por última vez.
Perú.
Enviar?
Perfecto.
Ahí está la treboles seleccionada.
Nada más.
Nos vemos en la siguiente clase.