Está en: | Inicio >> ISValidator >> Ejemplos >> Struts Completo | |
![]() | ![]() |
Ejemplos de ISValidatorEsta página recoge uno de los ejemplos de uso de las rutinas ISValidator. Puede así mismo ver los ejemplos que se incluyen en el paquete para descargar. SituaciónEste es un ejemplo del empleo de ISValidator junto con el Framework Struts de Apache. Ambos paquetes son complementarios ya que a la gestión MVC que realiza Struts se le puede añadir la gestión de validaciones que realiza ISValidator. Este uso de las validaciones de ISValidator en Struts se puede plantear en varios niveles. El ejemplo que se presenta aqui es el más completo y que mas prestaciones proporciona, aunque de momento para la versión 0.0.10 está todavía incompleto, faltando de realizar el contenedor de procesadores. Código del ejemploEste ejemplo es una adaptacion del ejemplo de Struts 1.0 y está hecho para la versión 0.0.10 de las rutinas ISValidator En este ejemplo se modifica el LoginForm del ejemplo de Struts 1.0 para utilizar ISValidator //added this imports import com.inigoserrano.isvalidator.constraintsV01.*; import com.inigoserrano.isvalidator.constraintsContainersV01.*; import com.inigoserrano.isvalidator.constraintsExceptionsV01.*; import com.inigoserrano.isvalidator.metaContainersV01.*; import com.inigoserrano.isvalidator.inValidConstraintProcessors.*; /** * Form bean for the user profile page. This form has the following fields, * with default values in square brackets: * <ul> * <li><b>password</b> - Entered password value * <li><b>username</b> - Entered username value * </ul> * * @author Craig R. McClanahan * @version $Revision: 1.2 $ $Date: 2001/12/12 12:15:03 $ */ public final class LoginForm1 extends ActionForm { private SimpleConstraintContainer password; private SimpleConstraintContainer username; public String getPassword() { return (this.password.getValueToCheck()); } public void setPassword(String password) { try{ this.password=new SimpleConstraintContainer(password,"password"); this.password.addConstraint(new NotBlankConstraint()); } catch (InternalConstraintException e) { //do nothing } } public String getUsername() { return (this.username.getValueToCheck()); } public void setUsername(String username) { try{ this.username=new SimpleConstraintContainer(username,"username"); this.username.addConstraint(new NotBlankConstraint()); } catch (InternalConstraintException e) { //do nothing } } public void reset(ActionMapping mapping, HttpServletRequest request) { this.password = null; this.username = null; } public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) { ActionErrors errors = new ActionErrors(); try{ SimpleMetaContainer allParameters = new SimpleMetaContainer(); allParameters.addContainer(password); allParameters.addContainer(username); if (!allParameters.checkConstraint()){ allParameters.setInValidConstraintProcesor(new StrutsInValidConstraintProcesor(new StrutsInValidContraintProcesorContainer())); //return an ActionErrors return allParameters.getInValidConstraintProcesorContainer().getActionErrors(); }else return errors; }catch(InternalConstraintException e){ return null; } catch(ConstraintException e){ return null; } catch(InValidConstraintProcesorInternalException e){ return null; } } } Descripción del CódigoLos cambios sobre el código son algo más profundos, se sustituyen los String que representan los campos por un contenedor de restricciones, en este caso el SimpleConstraintContainer, ya que no está especializado para ningún dominio. private SimpleConstraintContainer password; private SimpleConstraintContainer username; Lo siguiente que cambia son los métodos para obtener y poner los campos, ya que ahora deben utilizar el SimpleConstraintContainer. Tambien el el método de poner los valores de los campos se añaden las restricciones. Esto último tambien se podría haber realizado en el método validate. public void setPassword(String password) { try{ this.password=new SimpleConstraintContainer(password); this.password.addConstraint(new NotBlankConstraint()); } catch (InternalConstraintException e) { //do nothing } } A la hora de realizar la validación vienen los cmabios más profundos, ya que la generación de el objeto ActionError ahora es automática. Las etiquetas descriptivas del error, para buscarlos en el fichero de propiedades cambia y ahora es error.nombreDelParametro.nombreDeLaRestriccionQueHaFallado SimpleMetaContainer allParameters = new SimpleMetaContainer(); allParameters.addContainer(password); allParameters.addContainer(username); if (!allParameters.checkConstraint()){ allParameters.setInValidConstraintProcesor(new StrutsInValidConstraintProcesor(new StrutsInValidContraintProcesorContainer())); } //return an ActionErrors return allParameters.getInValidConstraintProcesorContainer().getActionErrors(); |
|