Entonces utilizamos el result del tipo binding result para validar de formularios, tiene errores y
lo manejamos, lo procesamos.
Usamos un asma para guardar los mensajes de error por cada input, por cada campo.
Luego lo pasamos a la vista, pero como error en singular, sin ese error y retornamos la vista.
El nombre de la vista.
Para qué?
Para regresar al formulario, para que el usuario pueda corregir nuevamente, pueda ver los errores,
en qué se equivocó y volver a enviar.
Pero bien, qué faltaría?
Porque por el lado procesar del controlador está perfecto, faltaría la vista.
Acá tenemos que agregar los mensajes de error por cada input utilizando el MAP.
En este caso acá error este objeto.
Entonces un DIF yucateca que iba Alier con TH IFF bueno, una expresión booleana, por qué hay que preguntar
que error sea distinto en UL como siempre con signo peso.
Bueno, por qué sería bueno, porque vamos a controlar, estamos a la vista formulario.
Acá la estamos retornando.
Estamos pasando el error.
Así que en caso de falla no debería haber ningún problema.
El objeto error no es nulo.
Pero qué pasa acá?
Cuando mostramos por primera vez al usuario el formulario acá en ninguna parte estamos pasando el error.
El objeto error, por lo tanto, va a ser nulo en un objeto nulo.
En Java no se puede invocar métodos ni atributos.
Entonces va a dar error.
Entonces, por eso primero tenemos que validar que el objeto error exista, sea distinto en URL en la
plantilla solamente para cuando mostramos el formulario por primera vez al usuario antes de enviar.
Entonces error distinto null, pero también con un APENSAR.
Tenemos que preguntar si existe el mensaje error para el Yussef.
Entonces acá utilizando error, recuerden que error es un map, un asma de Java.
Entonces contiene el método contains y de contener llave
y las comillas porque recibe un string comilla simple porque estamos en la vista en la plantilla.
Entonces acá preguntamos si error contiene la llave Yussef n.
Entonces acá Yousef.
Recordemos que cuando creamos y pasamos los datos al MAP, pasamos la llave nombre campo y el valor
el mensaje.
Entonces estamos preguntando si existe alguna llave para el campo y USENET.
Entonces el error es distinto, nulo y existe la llave.
Por tanto, tiene algún error, lo mostramos con th text bueno, con signo, peso, las llaves, extrapolación
de string error, punto.
Justamente acá estamos accediendo a la llave y Yousef del objeto map.
Bueno, una de la característica de Time Life es que podemos acceder a los atributos a los valores del
map mediante el punto punto justamente.
Bueno, también podríamos usar esta forma.
Por ejemplo, recordemos que el map para obtener el valor, por ejemplo acá solamente para mostrar.
Por acá tenemos el jet jet y el nombre de la llave Jet Ski.
Entonces también podríamos usar esa forma cualquiera de las dos.
Por ejemplo, Jet.
Y a Kalki acá faltó comilla doble, comilla doble acá y comilla dolça.
Entonces acá pegamos Yussef.
Se fijan otra forma.
Entonces un atajo es simplemente invocar el Yussef.
Acá.
Se fijan de forma directa, si no peso las llaves.
Error, punto.
La llave Elqui y.
Con las comillas.
Bueno, del TH text comilla doble vigen ha estado mostrando el valor el mensaje de error para el Yussef.
Y esto mismo lo he copiar.
Lo voy a pegar acá en password.
Y también acá para el email.
Bueno, solamente cambiamos acá.
El campo, en este caso password llega también.
Punto Pasqua de cada punto y mail.
De acá también.
Y estamos listos.
Vamos a revisar.
Levantamos como siempre.
Bien, enviar?
Perfecto.
El campo Yussef no puede estar vacío.
El password tampoco.
El email tampoco está funcionando bien.
Muéstrelo mensaje error por cada input.
12 Por ejemplo, completo con Andrés y completo también el correo Andrés y dejamos el password y enviamos.
Acá vamos a tener un error.
Un problema que lo vamos a revisar.
Enviamos, se fijan.
Nos muestra los valores.
Entonces lo ideal es que muestre el valor que tiene para poder revisarlo.
Se fijan para poder corregir el password y llenar y no tener que volver a escribir.
Por ejemplo Andrés ni tampoco el correo excepto enviar desaparece.
Todo se fija.
Entonces hay que mostrar los valores que ya tiene en el RECUESTAN el formulario, pero super simple.
Volvamos a la vista.
Bueno, en el input por acá tengo que agregar el valio.
Pero usando Time.
Sino peso y las llaves.
Bueno.
Y qué colocamos acá?
Bueno, acá hay un punto importante.
El formulario cuando valida y retornamos acá el for automáticamente pasa a la vista.
El objeto usuario lo hace de forma automática y transparente, aunque también lo podríamos ser de forma
manual.
Como esto, por ejemplo, también lo podríamos hacer acá de forma manual, pero ella lo hace.
Y con qué nombre?
Con el mismo nombre que la clase.
Si la clase se llama usuario, el nombre es usuario, pero todos minúscula, independientes y la U de
la clase correcto.
Siempre la clase comienza con mayúscula, pero independiente.
De eso se pasa con el nombre completamente en minúscula.
Es decir, cuando inicia minúscula.
Ahora si son palabra compuesta.
La otra palabra compuesta con mayúscula.
Eso sí, pero iniciando siempre con minúscula.
Entonces sería usuario en minúscula.
Punto.
Yussef.
Recuerden que se puebla e Yusa indem en el objeto usuario, entonces así mostraremos el valor y así
por cada uno.
El password bueno, en realidad password nunca se ha de mostrar por seguridad, ya que el password es
del tipo password, hízolo puntito entonce siempre el valio.
Acá no se aplica.
Entonces se puede omitir en realidad, pero igual dejémoslo igual.
No se va a mostrar.
Pero Elimelec si.
Incluso por un tema seguridad igual se debería quitar acá, ya que ese no puntito en realidad no tiene
sentido.
El Valium acá en el input del password, solamente el email y el Yousef cualquiera que no sea password,
guardamos bien.
Entonces recuerden que el objeto usuario que se pasa acá por argumento en el método ya contiene todos
los datos.
Entonces, si falla, se pasa nuevamente la vista de forma automática con el nombre de la clase.
Pero comenzando minúscula.
Bueno, después vamos a ver cómo cambiar este nombre.
Si cree que se llame distinto al nombre de la clase, cómo lo podemos customizar?
Bueno, para eso podemos usar la anotación model atributo, pero después lo vemos.
Vamos por partes.
Ya guardamos.
Guardamos también acá el Valium.
TH Valium.
Recuerden el TH de Tamblin sino peso las llaves usuario punto Yussef.
El password no va, pero si el email volvemos a actualizar o a enviaria se fijan.
Bueno lo vamos a volver a implementar Andrés y acá el correo en piar perfectas se fijan.
Ahora mantienen el Yussef y también mantienen el correo.
Solamente faltaría completar acá con cualquier cosa.
Enviar se.
Todo perfecto.
Volvemos y funciona bien.
Pero vamos a tener un problema.
Un error que también lo vamos a solucionar muy simple.
Si nos vamos a la plantilla formulario, pero sin enviar.
Es decir, la plantilla formulario por primera vez.
Entonces me voy a la ruta acá.
VL La seleccionamos.
Enter se vejan.
Me funciona.
Marca un error.
500.
Por qué?
Bueno, revisemos la plantilla en la plantilla con Valium.
Acá el Yussef Name, el Yussef Neem y el email.
Estamos accediendo a los atributos de un objeto usuario.
Si nos vamos a controlador acá en el form, donde se muestra por primera vez, en ninguna parte estamos
pasando al usuario en ninguna parte.
Entonces es null.
Por lo tanto, como en NULL, dale error, claro, porque no se puede invocar un atributo de un objeto
que es nulo.
Por ejemplo, acá el atributo Yussef meum de un objeto nul del objeto usuario nul no existe.
Entonces da un error de null pointer, excepto cómo se puede corregir.
Muy simple.
Acá vamos a agregar al usuario un objeto usuario por defecto punto add atributo importante.
Le tengo que nombrar igual usuario mismo nombre con el cual lo estamos usando en la plantilla en la
vista y acá también el valor.
Bueno, cuál sería el valor?
Tendríamos que crear la instancia por acá.
Usuario usuario igual new usuario bien.
Y pasamos acá al usuario puntico.
Guardamos.
Esperemos que se actualice.
Perfecto.
Actualizamos un refresco o f5.
Ahora no aparece el error y ahora sí que funciona.
Por ejemplo, enviar valida.
Andrés enviar.
Perfecto.
Ya no tiene error.
El correo tampoco.
Solamente el password.
Un, dos, tres, cuatro, cinco envian.
Y funciona.
Se fijan?
Entonces ahora si que si.
No marca error, bien.
Pero todo esto se puede automatizar todavía mucho más.
La idea era partir desde la base, creando las validaciones un poco manual de forma manual.
En fin.
Pero la siguiente clase vamos a tratar de automatizar un poco más este tema.
Por ejemplo, que el mensaje de error se pasen de forma automática a la vista a la plantilla de timeline.
Y esto lo podríamos quitar.
Tendremos mucho menos código.
Bueno, en realidad es todo acá.
Lo podríamos quitar.
Quería mucho menos código.
En fin, también campear los Baley, los TH Beaulieu y el Name You Sennet por una etiqueta, un atributo
de time life, TH Field o campo.
Pero bueno, lo vemos la siguiente clase.
Pero antes terminar, quiero ver un detalle.
Qué pasa si quiero que se llame distinto usuario en la vista?
Por ejemplo, en vez de usuario, acá le ponemos user, se fijan user acá Yussef.
No, cierto?
Acá.
Guardamos, se fijan?
Bueno, qué pasa?
Cómo lo podemos cambiar eso?
Bueno, lo primero, obviamente acá también hay que cambiar el nombre.
Sé, pero acá el problema que se pasa de forma automática con el nombre de la clase en caso de error.
Entonces se puede cambiar con la anotación model atributo porque ya tenemos Modell atributo.
Inculcamos Yussef.
Así de simple.
Y ahora se pasa con ese nombre a la plantilla.
Guardamos.
Recuerden que acá estamos pasando el usuario, pero en la otra vista han resultado.
Así que da lo mismo.
Lo que importa es la vista formulario el Yussef bien, hacemos un reflejo.
Funciona, funciona.
Funciona.
Se fijan?
Lo mismo, pero con un nombre distinto.
Recuerden, ya saben para qué sirve el Modell atributo acá.
Para indicar el nombre con el cual se pasa la vida de forma automática en caso de que falle la validación.
Pero bien lo deja como estaba.
Usted lo puede dejar así o lo pueden comentar como quieran.
Guardamos.
Y también acá.
En vez de user es usuario.
Guardamos.
Ya, ahora sí que sí.
Nos vemos en la siguiente clase.