IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Struts 1 Java Discussion :

[Struts][Validator] : créer ses propre validator [Sources]


Sujet :

Struts 1 Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 112
    Points : 65
    Points
    65
    Par défaut [Struts][Validator] : créer ses propre validator
    Bonjour à tous,

    J'aurais aimé savoir s'il est possible de créer ses propre validatore et de les inclure dans le fichier validator-rules.xml?
    Si cela est possible quelle classe dois-je étendre.

    merci d'avance

  2. #2
    Membre éprouvé
    Profil pro
    Développeur Back-End
    Inscrit en
    Avril 2003
    Messages
    782
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Back-End

    Informations forums :
    Inscription : Avril 2003
    Messages : 782
    Points : 935
    Points
    935
    Par défaut
    tu peux créer tes propres validator et les inclure dans un autre fichier validator

    exemple :

    pour la classe java
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    public final class CodePostalCheck {
     
       /**
        * Utility classes should not have a public or default constructor.
        */
       private CodePostalCheck() {
       }
     
       /**
        * Méthode de validation d'un code postal
        * @param p_bean Form Bean du formulaire
        * @param p_validatorAction Action de validation
        * @param p_field Champ du formulaire
        * @param p_actionMessages Erreurs Struts
        * @param p_request Request HTTP
        * @return true si le code postal est valide.
        */
       public static boolean validateCodePostal(
          Object p_bean,
          ValidatorAction p_validatorAction,
          Field p_field,
          ActionMessages p_actionMessages,
          HttpServletRequest p_request) {
          String value =
             ValidatorUtils.getValueAsString(p_bean, p_field.getProperty());
          if (!GenericValidator.isBlankOrNull(value)) {
             if (!CodePostalValidation.isValide(new Integer(value))) {
                p_actionMessages.add(
                   p_field.getKey(),
                   Resources.getActionMessage(
                      p_request,
                      p_validatorAction,
                      p_field));
                return false;
             }
          }
          return true;
       }
     
    }
    dans ton fichier myvalidator.xml

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    <!DOCTYPE form-validation PUBLIC
              "-//Apache Software Foundation//DTD Commons Validator Rules Configuration 1.1.3//EN"
              "http://jakarta.apache.org/commons/dtds/validator_1_1_3.dtd">
    <form-validation>
     
       <global>
          <validator name="cdPostal"
                classname="mon.package.CodePostalCheck"
                   method="validateCodePostal"
             methodParams="java.lang.Object,
                           org.apache.commons.validator.ValidatorAction,
                           org.apache.commons.validator.Field,
                           org.apache.struts.action.ActionMessages,
                           javax.servlet.http.HttpServletRequest"
                  depends="integer"
                      msg="errors.codePostal"/>
       </global>
    </form-validation>
    et au niveau du strut-config :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        <plug-in className="org.apache.struts.validator.ValidatorPlugIn">
            <set-property property="pathnames" value="/WEB-INF/validator-rules.xml,/WEB-INF/myvalidator.xml,/WEB-INF/validation.xml" />
        </plug-in>

  3. #3
    Membre éprouvé

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    882
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2004
    Messages : 882
    Points : 948
    Points
    948
    Par défaut
    Tu peux aussi ajouter le javascript qui servira à valider le formulaire côté client. voici un exemple qui valide que deux dates du formulaire sont consécutives:

    Classe Java - elle servira notamment pour la validation côté serveur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    /**
     * Custum struts validator
     *
     * @author bsempere
     */
    public class ValidConsecutiveDate {
     
        /**
         * Teste que deux dates saisies sont consécutives
         *
         * @param bean
         * @param va
         * @param field
         * @param messages
         * @param request
         *
         * @return boolean
         */
        public static boolean validateTwoConsecutiveDate(Object bean, ValidatorAction va, Field field, ActionMessages messages, HttpServletRequest request) {
     
            String value = ValidatorUtils.getValueAsString(bean, field.getProperty());
            String sProperty2 = field.getVarValue("endDate");
            String value2 = ValidatorUtils.getValueAsString(bean, sProperty2);
     
            //Si une des deux date est null => la validation est ok
            if(!GenericValidator.isBlankOrNull(value) && !GenericValidator.isBlankOrNull(value2)) {
     
                try {
     
                    //Si les deux dates sont identiques => la validation est ok
                    if(!value.equals(value2)) {
     
                        //Il faut tester que la date de depart est antérieure a la date de fin
                        Calendar dateDeb = GesUtClioSimpleDateFormat.parseCalendar(value);
                        Calendar dateFin = GesUtClioSimpleDateFormat.parseCalendar(value2);
     
                        //Probleme de validation
                        if(!dateDeb.before(dateFin)) {
     
                            messages.add(field.getKey(), Resources.getActionMessage(request, va, field));
     
                            return false;
                        }
                    }
                } catch(Exception e) {
     
                    messages.add(field.getKey(), Resources.getActionMessage(request, va, field));
     
                    return false;
                }
            }
     
            return true;
        }
    }
    Fichier validation-rules pour la validation côté client
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
     
    <!-- Custom validation for date -->
    <validator name="validConsecutiveDate"
    	msg="errors.datedeb.notbefore.datefin"
            classname="sec.gespers.validator.validconsecutivedate.ValidConsecutiveDate"
                method="validateTwoConsecutiveDate"
                methodParams="java.lang.Object,
                           org.apache.commons.validator.ValidatorAction,
                           org.apache.commons.validator.Field,
                           org.apache.struts.action.ActionMessages,
                           org.apache.commons.validator.Validator,
                           javax.servlet.http.HttpServletRequest">
     
    			<javascript><![CDATA[
    				function validateTwoConsecutiveDate(form) {
    					var bValid = true;
    					var focusField = null;
    					var i = 0;
     
    					var formName = form.getAttributeNode("name"); 
    		            var fields = new Array();
    					oTwoFields = eval('new ' + formName.value + '_validConsecutiveDate ()');
    					for (x in oTwoFields) {
    						var field = form[oTwoFields[x][0]];
    						var secondField = form[oTwoFields[x][2]("endDate")];
     
    						if (field.type == 'hidden' || field.type == 'text' || field.type == 'textarea') {
     
    							var value;
    							var secondValue;
    							// get field's value
    							value = field.value;
    							secondValue = secondField.value;
     
    							//Tranformation en date de debut
    							var j=(value.substring(0,2)); 
    							var m=(value.substring(3,5)); 
    							var a=(value.substring(6)); 
    							var ddebut=new Date(a,m-1,j); 
    							var debut=ddebut.getTime(); 
     
    							//Tranformation en date de fin										 
    							var j=(secondValue.substring(0,2)); 
    							var m=(secondValue.substring(3,5)); 
    							var a=(secondValue.substring(6)); 
    							var dfin=new Date(a,m-1,j); 
    							var fin=dfin.getTime(); 
     
     
    							if ((ddebut.getTime()) > (dfin.getTime())){							
    								if (i == 0) {
    									focusField = field;
    								}
    								fields[i++] = oTwoFields[x][1];
    								bValid = false;
    							}
    						}
    					}
     
    					if (fields.length > 0) {
    						focusField.focus();
    						alert(fields.join('\n'));
    					}
     
    					return bValid;
    		}]]></javascript>
    </validator>
    Exemple de validation
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    <field property="dateDebNewCycle" depends="required,date,mask,validConsecutiveDate" page="11">
        <arg key="prompt.cours.dateDebNewCycle"/>
        <var>
            <var-name>datePattern</var-name>
            <var-value>${clioDatePattern}</var-value>
        </var>		
        <var>
            <var-name>mask</var-name>
            <var-value>${clioDatePatternForSave}</var-value>
        </var>	
        <var>
            <var-name>endDate</var-name>
            <var-value>dateFinNewCycle</var-value>
        </var>							
    </field>
    bon courage

    Sun Certified Business Component Developer
    Sun Certified Java Programmer
    --
    The definitive toolbox for GWT applications: gwt-toolbox
    My blog about Java and JEE: Benjamin's Blog

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 112
    Points : 65
    Points
    65
    Par défaut
    Merci à tous pour vos réponse

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] créer ses propres fonctions
    Par essono dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 18/11/2006, 15h09
  2. [platform] Créer ses propres wizard ?
    Par n!co dans le forum NetBeans
    Réponses: 5
    Dernier message: 10/10/2006, 11h33
  3. Créer ses propres exceptions
    Par Neilos dans le forum C++Builder
    Réponses: 10
    Dernier message: 13/06/2006, 18h44
  4. [Struts]créer ses propres tag struts
    Par jeb001 dans le forum Struts 1
    Réponses: 3
    Dernier message: 08/09/2005, 19h56
  5. Programme permettant de créer ses propres paquets TCP/UDP
    Par mat087 dans le forum Développement
    Réponses: 6
    Dernier message: 21/05/2004, 21h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo