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 ] Afficher un message d'alerte


Sujet :

Struts 1 Java

  1. #1
    Membre régulier
    Inscrit en
    Mars 2004
    Messages
    103
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mars 2004
    Messages : 103
    Points : 78
    Points
    78
    Par défaut [ Struts ][ Validator ] Afficher un message d'alerte
    En parcourant le source javascript du validator, j'ai cru comprendre que celui-ci devait mettre le focus sur le champ en erreur lorsqu'une erreur a été détectée, comme lorsque dans la fonction validateRequired(form) où je lis la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if (trim(value).length == 0) {
     
    	                        if (i == 0) {
    	                            focusField = field;
    	                        } 
    etc...
    Or la validation marche, mais pas le focus. Est-il possible que je doive définir le nom de mes champs ailleurs que dans le fichier validation.xml ?

  2. #2
    Membre averti
    Inscrit en
    Mars 2004
    Messages
    377
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 377
    Points : 356
    Points
    356
    Par défaut
    Salut,
    Peux tu me dire sur quel version de Struts tu travailles, sur quel type de champs (liste, text, password) et sur quel type de validation.
    J'ai regardé dans mon fichier de validation , et je ne vois aucun code ressemblant à le tien ce qui ne m'aide malheureusement pas suffisamment.

    Voili, voilou
    8) 8)

  3. #3
    Membre régulier
    Inscrit en
    Mars 2004
    Messages
    103
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mars 2004
    Messages : 103
    Points : 78
    Points
    78
    Par défaut
    Salut,

    je travaille sur Struts 1.1, les champs sur lesquels j'effectue des validations sont des champs texte.
    Les validations que j'ai utilisé sont required et mask.

  4. #4
    Membre averti
    Inscrit en
    Mars 2004
    Messages
    377
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 377
    Points : 356
    Points
    356
    Par défaut
    Voilà ce que j'ai dans mon fichier validator-rules.xml :

    Pour required :
    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
    <validator name="required"
                classname="org.apache.struts.util.StrutsValidator"
                   method="validateRequired"
             methodParams="java.lang.Object,
                           org.apache.commons.validator.ValidatorAction,
                           org.apache.commons.validator.Field,
                           org.apache.struts.action.ActionErrors,
                           javax.servlet.http.HttpServletRequest"
                      msg="errors.required">
     
             <javascript><![CDATA[            
                function validateRequired(form) {
                    var bValid = true;
                    var focusField = null;
                    var i = 0;
                    var fields = new Array();
                    oRequired = new required();
                    for (x in oRequired) {
     
     
                        if ((form[oRequired[x][0]].type == 'text' ||
                             form[oRequired[x][0]].type == 'textarea' ||
                             form[oRequired[x][0]].type == 'select-one' ||
                             form[oRequired[x][0]].type == 'radio' ||
                             form[oRequired[x][0]].type == 'password' ||
                             form[oRequired[x][0]].type == 'hidden') &&
                            (form[oRequired[x][0]].value == '')) {
                            if (i == 0) {
                            	if (form[oRequired[x][0]].type != 'hidden'){
                                	focusField = form[oRequired[x][0]];
                               }else{focusField=null;}
                            }
                            fields[i++] = oRequired[x][1];
                            bValid = false;
                        }
                    }
                    if (fields.length > 0) {
                       if (focusField != null){	
                       focusField.focus();}
                       alert(fields.join('\n'));
                    }
                    return bValid;
                }]]>
             </javascript>
     
          </validator>

    Pour mask :
    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
    <validator name="mask"
                classname="org.apache.struts.util.StrutsValidator"
                   method="validateMask"
             methodParams="java.lang.Object,
                           org.apache.commons.validator.ValidatorAction,
                           org.apache.commons.validator.Field,
                           org.apache.struts.action.ActionErrors,
                           javax.servlet.http.HttpServletRequest"
                  depends="required"
                      msg="errors.invalid">
     
             <javascript><![CDATA[
                function validateMask(form) {
                    var bValid = true;
                    var focusField = null;
                    var i = 0;
                    var fields = new Array();
                    oMasked = new mask();
                    for (x in oMasked) {
                        if ((form[oMasked[x][0]].type == 'text' ||
                             form[oMasked[x][0]].type == 'textarea' ||
                             form[oMasked[x][0]].type == 'password') &&
                            (form[oMasked[x][0]].value.length > 0)) {
                            if (!matchPattern(form[oMasked[x][0]].value, oMasked[x][2]("mask"))) {
                                if (i == 0) {
                                    focusField = form[oMasked[x][0]];
                                }
                                fields[i++] = oMasked[x][1];
                                bValid = false;
                            }
                        }
                    }
                    if (fields.length > 0) {
                       focusField.focus();
                       alert(fields.join('\n'));
                    }
                    return bValid;
                }
     
                function matchPattern(value, mask) {
                   var bMatched = mask.exec(value);
                   if (!bMatched) {
                       return false;
                   }
                   return true;
                }]]>
             </javascript>
     
          </validator>
    Essaie peut-être de changer ces deux là pour voir si cela marche mieux, car je ne vois pas pourquoi cela ne marcherait pas.
    Précaution : Copie ceux dont tu disposes avant.

    A+

  5. #5
    Membre régulier
    Inscrit en
    Mars 2004
    Messages
    103
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mars 2004
    Messages : 103
    Points : 78
    Points
    78
    Par défaut
    Apparemment j'ai les mêmes, donc le problème c'est que le validator n'est pas appelé correctement ou alors les champs ne sont pas correctement identifiés par le JavaScript de mes pages.
    Si je récapitule les étapes ca donne :
    1/définition du validation.xml
    2/héritage de mon ActionForm en ValidatorForm
    3/la balise html:javascript
    J'ai oublié qqch ?

  6. #6
    Membre averti
    Inscrit en
    Mars 2004
    Messages
    377
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 377
    Points : 356
    Points
    356
    Par défaut
    Tu as bien défini ton form dans ton struts-config.xml.
    Et fais en sorte que son nom coïncide avec celui contenu dans ton validation.xml ??

  7. #7
    Membre régulier
    Inscrit en
    Mars 2004
    Messages
    103
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mars 2004
    Messages : 103
    Points : 78
    Points
    78
    Par défaut
    Non ben je ne comprends vraiment pas, si c'est un prb de javascript ou autre ?
    Parce que des erreurs globales sont bien générées avec les noms de propriétés que je rentre dans validation.xml, et j'arrive au moins à les afficher avec html:errors, mais rien a faire pour le focus et l'alert javascript !

    Mon fichier validation.xml simplifié :
    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
    		<form name="loginForm">
    			<field
    				property="utilisateur.loginUtilisateur"
    				depends="required,mask">
    				<arg0 key="login.login" />
    				<var>
    					<var-name>mask</var-name>
    					<var-value>^[0-9a-zA-Z]*$</var-value>
    				</var>
    			</field>
    			<field 
    				property="utilisateur.motPasseUtilisateur"
    				depends="required,mask">
    				<arg0 key="login.pass" />
    				<var>
    					<var-name>mask</var-name>
    					<var-value>^[0-9a-zA-Z]*$</var-value>
    				</var>
    			</field>
    		</form>
    Remarque la ressource "login.login" (dsl pour le manque d'imagination )
    Dans mon fichier applicationresources.properties, il y a bien


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    login.login=Le champ nom d'utilisateur
    qui va bien afficher "Le champ nom d'utilisateur est requis" sur la page JSP avec la balise <html:errors> !

  8. #8
    Membre régulier
    Inscrit en
    Octobre 2003
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Octobre 2003
    Messages : 93
    Points : 86
    Points
    86
    Par défaut
    Je te conseille de jeter un coup d'oeil sur ce site, les explications relatives à la mise en place du plugin Validator sont assez claires

    http://www.mycgiserver.com/~eboudrant/borcon2002/4104/#3

    Ainsi tu pourras vérifier que toutes tes déclarations sont correctes.
    Perso j'ai appliqué à la lettre ce qui est spécifié sur ce site, et tout fonctionne nikel !

    Bon courage.

  9. #9
    Membre régulier
    Inscrit en
    Mars 2004
    Messages
    103
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mars 2004
    Messages : 103
    Points : 78
    Points
    78
    Par défaut
    Merci bcp ! En effet, je n'avais pas spécifié la propriété de balise à savoir
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <html:javascript formName="loginForm" />

    En tout cas ton URL est bien utile, il y a d'autres best practices intéressants...

  10. #10
    Membre averti
    Inscrit en
    Mars 2004
    Messages
    377
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 377
    Points : 356
    Points
    356
    Par défaut
    Ah oui ce tag là est obligatoire, pour le controle Javascript.
    Merci effectivement à djoukit, car ton lien est très intéressant.
    A+

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

Discussions similaires

  1. afficher un message ou alerte
    Par smile0015 dans le forum Forms
    Réponses: 1
    Dernier message: 10/09/2009, 12h54
  2. Afficher un message d'alerte si plus de 5 checkbox cochés
    Par JackBeauregard dans le forum Général JavaScript
    Réponses: 14
    Dernier message: 07/08/2007, 12h06
  3. afficher un message type "alerte"
    Par Clorish dans le forum Interfaces Graphiques en Java
    Réponses: 6
    Dernier message: 29/03/2007, 17h31
  4. Afficher un message d'alerte dès que la sixième case est cochée
    Par JackBeauregard dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 16/01/2007, 17h03
  5. [Struts] Comment afficher des messages de confirmation
    Par vallica dans le forum Struts 1
    Réponses: 8
    Dernier message: 28/04/2006, 14h25

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