Objetivo
Si queremos validar formularios desde Struts, algo util pero que de cara a UX pues no te sabría decir. Hay cientos (uy cientos!!! ) de artículos al respecto.
Yo soy de la manera de pensar que la validacion, debe ser por un lado "transparente" al usuario, es decir, no debe repetir todos los campos, es más, no debería repetir ninguno. Pero también es cierto que debemos medir cuidadosamente la seguridad del site.
En ese equilibrio, residirá el éxito. Si el usuario se "aburre" de rellenar campos, y además, le estamos fastidiando con validaciones, pues vamos apañados para que vuelva a venir.
Ahora bien, resulta que solemos pensar como lo que somos, developers, y claro, ahí es donde nos entran las dudas, somos cómodos y queremos hacer una validación estricta pero fácil de programar, etc. Pues señores, va a ser que no, los usuarios quieren (queremos ¿O no somos usuarios nosotros mismos?) algo sencillo, pero que se sientan seguros, por lo que nos tocará bajar al nivel que corresponda y hacer las cosas lo mejor posible, pero recordad "lo bueno es enemigo de lo mejor, y este a su vez de lo perfecto".
1. ¿Que necesitamos?
Pues poca cosa:
import com.opensymphony.xwork2.validator.annotations.RequiredStringValidator; .... @Action(value = "login", results = { @Result(name = "SUCCESS", location = "welcome.jsp"), @Result(name = "ERROR", location = "error.jsp"), @Result(name = "INPUT", location = "login.jsp")}) .... @RequiredStringValidator(message = "Please enter VALID NAME.") public void setName(String name) { this.name = name; } @RequiredStringValidator(message = "Please enter your PASS.") public void setPwd(String pwd) { this.pwd = pwd; }
Hemos añadido un validator, uno de los que hay, repito eso de bajar al nivel que deseemos.
¿Dónde lo hemos puesto? Pues donde se rellena el dato, en el SET
2. ¿Y donde nos manda?
Ahí está el único detalle. Lo debemos redirigir a la misma página que teníamos, es decir a la de login.jsp, y lo va a hacer "magicamente" a través del resultado INPUT, el cual debemos mapear.3. ¿Ya está?
Pues no, porque debemos indicar en el JSP lo que necesitamos validar.
1 2 3 4 5 | <s:form action="login" method="post" validate="true"> <s:textfield name="name" label="User Name"></s:textfield> <s:textfield name="pwd" label="Password" type="password"></s:textfield> <s:submit value="Login"></s:submit> </s:form> |
Y si ahora nos fijamos, tenemos el VALIDATE a true.
4. ¿Ahora sí?
Ahora podemos probar a dejar en blanco la PASS y/o el USER, pero depende de la lógica que demos en el EXECUTE() validaremos el contenido. Es decir, esto nos valida el campo, pero no que lo hayamos puesta sea lo que necesitemos.
No hay comentarios:
Publicar un comentario
Nota: solo los miembros de este blog pueden publicar comentarios.