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 :

[Validation] Comment empecher certains caractères ?


Sujet :

Struts 1 Java

  1. #1
    vny
    vny est déconnecté
    Membre du Club
    Inscrit en
    Mai 2004
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 74
    Points : 48
    Points
    48
    Par défaut [Validation] Comment empecher certains caractères ?
    Bonjour,

    Comment faites-vous pour empecher que tous les inputs d'une application ne contiennent certains caractères (comme backslash, ....) ?

    Faut-il absolument le fair epour chaque champ ou y a-t-il un moyen de le définir de manière générale ?

    Merci bcp pour vos idées

  2. #2
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Points : 9 529
    Points
    9 529
    Billets dans le blog
    1
    Par défaut
    Il y a toujours moyen de le faire avec une méthode javascript, mais il faudra quand même affecter la méthode à l'événement onkeypress...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <input type="text" name="leChamp" ... onkeypress="return methodeControle(event)" ...>
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre éclairé Avatar de zorm
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    584
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 584
    Points : 672
    Points
    672
    Par défaut
    Si tu utilises Struts, il y a validator qui permet de dire pour un champ ou un ensemble de champs toutes les contraintes que tu souhaites avoir.
    L'avantage est que tu peux definir des "mask" qui vont tester ton champ par rapport à une expression reguliere.
    Le validator une fois écrit te génèrera après automatiquement ton javaScript.

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    372
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 372
    Points : 239
    Points
    239
    Par défaut
    zorm tu peux détailler un peu stp? C'est pour ma culture générale parce que j'ai déjà eu à faire cela (genre limiter une saisie dans un input à des nombres) mais bon, je l'ai fait en javascript, je vais pas le refaire...
    Mais ca m'interesse de savoir comment on peut faire cela a vec des outils de Struts...

    As tu des liens à me donner pour que je puisse voir comment ca marche ca stp?
    N'oubliez pas que l'eau ça rouille !
    est votre ami !

  5. #5
    Membre éclairé Avatar de zorm
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    584
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 584
    Points : 672
    Points
    672
    Par défaut
    Très bien, je vais détailler. Avec Struts, il existe 2 facons de valider les champs d'un formulaire.
    Du coté client avec Struts Validator et du coté serveur en surchargeant la méthode validate() de ton ActionForm.
    Le résultat est le meme au final, le probleme etant que si l'utilisateur a desactivé le javascript dans son navigateur, Struts validator passe à la trappe.
    Quant à la surcharge de la méthode validate(), c'est assez lourd à mettre en place, je vais te donner un exemple:

    Pour la surcharge:
    Son appel dépend de l'attribut "validate" (true ou false) de l'action-mapping auquel est associé le form-bean
    Un avantage est qu'il permet de gérer les erreurs de saisie stockées dans une structure d'erreur (ActionErrors)
    Voila un exemple de surcharge de validate() et utilisation d'une structure de collecte des erreurs (ActionErrors) :
    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
    public class ExempleForm extends ActionForm {
    private String maPropriete;
    public String getMaPropriete(){
        return maPropriete;
    }
    public void setMaPropriete (String pMaPropriete) {
      this. maPropriete = pMaPropriete;
    }
    public ActionErrors validate(ActionMapping pMapping, HttpServletRequest pRequest) { 
      ActionErrors actionErrors = new ActionErrors(); 
      if (maPropriete == null) {
        actionErrors.add( "maPropriete", new ActionMessage("maPropriete.null") );
      }
      return actionErrors ;
    }
    Par le Plug-in Validator:
    Il a au moins 2 avantages,
    Il permet de décrire des contraintes d’intégrité directement dans un fichier XML et il permet de valider les donnés côté client sans écrire la moindre ligne de JavaScript.

    Voici un exemple de validator-rules.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
    20
    21
    22
    23
     
    <form-validation>
     <global>
      <constant>
        <constant-name>entierpositif</constant-name>
        <constant-value>^\s*\d+\s*$</constant-value>
      </constant>
      </global>
      <formset>
       <form name="formPersonne">
        <field property="nom" depends="required">
           <arg0 key="personne.nom"/>
        </field>
        <field property="age" depends="required,mask">
           <arg0 key="personne.age"/>
           <var>
              <var-name>mask</var-name>
              <var-value>${entierpositif}</var-value>
           </var>
        </field>
      </form>
      </formset>
    </form-validation>
    Ici, je dis que le champs nom de mon formulaire formPersonne est obligatoire et que mon champs age du meme formulaire est obligatoire mais en plus que ca doit etre un entier positif (défini par la regex dans mask).

    Bref, le sujet est vaste et je n'ai pas pu tout expliqué et montré mais l'idée est là.
    Tu trouveras la doc officielle avec plein d'exemple ici:
    http://struts.apache.org/1.2.4/userG...validator.html

    Bonne chance

  6. #6
    Membre actif
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    372
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 372
    Points : 239
    Points
    239
    Par défaut
    Merci beaucoup

    Ca me servira certainement sur des projets futurs....
    N'oubliez pas que l'eau ça rouille !
    est votre ami !

  7. #7
    vny
    vny est déconnecté
    Membre du Club
    Inscrit en
    Mai 2004
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 74
    Points : 48
    Points
    48
    Par défaut Merci
    JE n'avais pas vu vos réponses et ai vitre dû coder du javascript et placer sur tous les champs input le test js avant le submit du formulaire.

    Pas top à mon gout donc tes infos vont m'être utile pour améliorer tout cela.
    J'ai déjà qq questions :

    1.Dans le fichier xml, faut il spécifier tous les noms des champs ou est-il possible de dire tous les champs de type input ?

    2. en passant par la méthode validate, ne dois-je pas criandre le string "backslash" puisque celui-ci est envoyé sur le serveur et non déjà bloqué côté client ?

    Merci pour tes explications

  8. #8
    Membre éclairé Avatar de zorm
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    584
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 584
    Points : 672
    Points
    672
    Par défaut
    Bonjour,

    Déja, il faut que tu utilises Struts pour pouvoir en profiter ce qui n'est peut etre pas ton cas.

    1.Dans le fichier xml, faut il spécifier tous les noms des champs ou est-il possible de dire tous les champs de type input ?
    Effectivement, il faut y mettre tous les champs que tu veux vérifier à moins que je me trompe. Par contre, si la validation est toujours la meme, alors seulement un mask est à écrire et à passer à tous les champs.

    2. en passant par la méthode validate, ne dois-je pas criandre le string "backslash" puisque celui-ci est envoyé sur le serveur et non déjà bloqué côté client ?
    Je ne comprend pas trop le probleme, la methode validate s'execute du coté serveur mais ce n'est pas parce qu'un backslash a été envoyé au serveur que tout est foutu, il ne va pas se dire "chouette, je suis sur le serveur, je vais tout contaminer" .
    Serieusement, la méthode validate va etre executée (coté serveur) avant que les valeurs de ton formulaire ne soient enregistrées. Il suffit que l'une d'elles ne correspondent pas aux tests fait dans la méthode validate pour que rien ne soit enregistré. Tu as meme le moyen d'associer dans ta methode validate un message d'erreur qui sera affiché sur la page si un ou plusieur tests ont échoué.

Discussions similaires

  1. Empecher certains caractères
    Par HwRZxLc4 dans le forum jQuery
    Réponses: 4
    Dernier message: 15/11/2009, 20h43
  2. [AC-2007] Comment empêcher la saisie de certains caractères
    Par sercat dans le forum IHM
    Réponses: 25
    Dernier message: 18/05/2009, 20h46
  3. [RegEx] Expression validant un certains caractères dont les accents
    Par moi.mc dans le forum Langage
    Réponses: 13
    Dernier message: 22/12/2007, 15h03
  4. Réponses: 5
    Dernier message: 08/02/2007, 16h46
  5. [JBuilder9][JSP] Comment empêcher la recompilation
    Par lamimolette75 dans le forum JBuilder
    Réponses: 2
    Dernier message: 11/07/2003, 15h20

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