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 :

valider un formulaire avec struts


Sujet :

Struts 1 Java

  1. #1
    Membre du Club
    Inscrit en
    Novembre 2008
    Messages
    132
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 132
    Points : 43
    Points
    43
    Par défaut valider un formulaire avec struts
    salut tout le monde
    je suis un débutant en Struts (v 1.3.8) et j'ai une application avec celui-ci.
    au niveau de la base de données il existe une table appelée emlpoyé dont les champs suivants:matricule(entier),nom(texte),prenom(texte),age,adresse(texte),salaire(réel),tel(texte),email(texte),date d'embauche(date).
    j'ai crée la page jsp correspondante.
    mon but n'est pas seulement la réalisation de l'ajout des emplyés mais aussi la validation de tous le champs saisis dans le formuaire.
    mes questions sont les suivantes:
    1)la déclaration de tous les champs dans l'ActionForm en String est obligatoire?
    2)si oui?pourquoi?
    3)je vois que certaines vérification peut se faire côté client alors est ce que je peux les faire avec javascript ou bien je dois l'éviter?

    merci d'avance pou votre aide.

  2. #2
    Expert éminent

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Points : 7 778
    Points
    7 778
    Par défaut
    Struts 1 est plutôt adapté pour fonctionner avec des propriétés de type String dans l'ActionForm et d'autant plus lorsqu'on utilise le Validator pour la validation.

    Tu peux effectivement activer une validation côté client mais, comme le Javascript peut être désactivé au niveau du navigateur, il est plus prudent d'activer aussi la validation côté serveur.
    Tu peux facilement mettre en oeuvre ceci avec le Validator.
    Modératrice Java - Struts, Servlets/JSP, ...

  3. #3
    Membre confirmé Avatar de JoloKossovar
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    532
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 532
    Points : 576
    Points
    576
    Par défaut
    De manière général, la bonne pratique est d'effectuer les vérifications coté client ET coté serveur.

  4. #4
    Membre du Club
    Inscrit en
    Novembre 2008
    Messages
    132
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 132
    Points : 43
    Points
    43
    Par défaut
    merci pour l'aide

    pourquoi j'ai demandé si les propriétés de ActionForm doivent être en String car la plupart des exemples que j'ai vu les propréités ont déclaré en String.
    je reviens à mon exemple de la table emplyé et je prend seulement la colonne "age",celle-ci est déclarée dans bd en int alors je dois la déclarée en int dans ActionForm,je l'ai fait mais mon problème c'est que lors de la saisie d'une valeur n'est pas numérique dans JSP,il ne me génère pas une exception.

  5. #5
    Expert éminent

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Points : 7 778
    Points
    7 778
    Par défaut
    Je te conseille de définir la propriété age de type String dans l'ActionForm et de la transformer de int en String avant l'affichage du formulaire et de String en int avant la sauvegarde dans la base de données.
    Modératrice Java - Struts, Servlets/JSP, ...

  6. #6
    Membre du Club
    Inscrit en
    Novembre 2008
    Messages
    132
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 132
    Points : 43
    Points
    43
    Par défaut
    j'arrive à une solution pas mal

    voici le code de ActionForm:

    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
    private String age;
    public String getAge() {
    	return age;
    }
    public void setAge(String age) {
    	this.age = age;
    }
     
     
    public ActionErrors validate( ActionMapping mapping, HttpServletRequest request){
     
    ActionErrors errors = new ActionErrors();
    f(age==null || age.length()<1)
    	errors.add("age", new ActionMessage("errors.required","l'age"));
    else{
    	try{
    		int x=Integer.parseInt(age);
    	}
    	catch(NumberFormatException e){
    	errors.add("age",new ActionMessage("errors.invalid","l'age"));
    		}
    }
    	return errors;
    }
    j'utilise la variable x pour le test.

    et voicie le fichier des messages:
    errors.header=<ul>
    errors.prefix=<li style="color:red">
    errors.suffix=</li>
    errors.footer=</ul>
    errors.required={0} est obligatoire.
    errors.invalid={0} est invalide.
    bien sur j'ajoute la balise <html:errors/> pour afficher les messages d'erreur

    je vois que la vérification fonctionne bien,quel votre avis?

    il me reste la vérification de la date

  7. #7
    Expert éminent

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Points : 7 778
    Points
    7 778
    Par défaut
    C'est parfait.
    Modératrice Java - Struts, Servlets/JSP, ...

  8. #8
    Expert éminent

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Points : 7 778
    Points
    7 778
    Par défaut
    Tu pourrais même ajouter le libellé du champ age dans le fichier des messages :
    libelle.age=l'age
    et :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    errors.add("age", new ActionMessage("errors.required","libelle.age"));
    Modératrice Java - Struts, Servlets/JSP, ...

  9. #9
    Membre du Club
    Inscrit en
    Novembre 2008
    Messages
    132
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 132
    Points : 43
    Points
    43
    Par défaut
    ok
    est ce que la même chose pour une variable mais cette fois de type double?

    maintenant j'arrive à vérifier la date saisie par l'utilisateur dans le formulaire mais avant tout ca.
    est-il préférable d'utiliser une zone de texte dans la page JSP(donc la vérification ne sera pas facile)pour la date ou bien des listes déroulantes la premier dont les valeurs de 1 à 31 , la deuxième pour les mois et la dernière pour les années?

  10. #10
    Expert éminent

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Points : 7 778
    Points
    7 778
    Par défaut
    C'est effectivement le même principe pour un double.

    Et pour valider le champ date, il suffit d'utiliser la méthode parse de la classe SimpleDateFormat qui renvoie une exception si la date ne correspond pas au format désiré (voir la section Comment convertir une chaîne en Date dans la FAQ Java).
    Modératrice Java - Struts, Servlets/JSP, ...

  11. #11
    Membre du Club
    Inscrit en
    Novembre 2008
    Messages
    132
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 132
    Points : 43
    Points
    43
    Par défaut


    la date fonctionne bien,merci bouceaup.

    Voici le code de vérification de la date dans mon ActionForm:

    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
    private String dateEmbauche;
    public String getDateEmbauche() {
    	return dateEmbauche;
    }
    public void setDateEmbauche(String dateEmbauche) {
    	this.dateEmbauche = dateEmbauche;
    }
    public ActionErrors validate( ActionMapping mapping, HttpServletRequest request){
    ActionErrors errors = new ActionErrors();
    if(dateEmbauche==null || dateEmbauche.length()<1){
                 errors.add("dateEmbauche", new ActionMessage                    ("errors.required","la date d'embauche"));
    	}
    else{
            try{
    	SimpleDateFormat sdf=new SimpleDateFormat("dd/MM/yyyy");
    			Date d=sdf.parse(dateEmbauche);
    	}
            catch(Exception e){
    	errors.add("dateEmbauche",new ActionMessage("errors.date","la date d'embauche"));
    		}
    	}
    return errors;
    }
    l'objet errors de la classs ActionErrors a deux méthodes add(surcharge):
    la première méthode:add(ActionMessage p1)
    la deuxième méthode:add(String p1,ActionMessage p2)
    dans mon travail j'utilise seulement la deuxième méthode cependant je vois que j'ai pas besoin son premier paramètre.
    ce que je pourrais savoir où on aurra besoin ce paramètre.

  12. #12
    Expert éminent

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Points : 7 778
    Points
    7 778
    Par défaut
    Le premier paramètre est utile lorsque tu veux utiliser dans la jsp le tag <html:errors> avec l'attribut property :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <html:errors property="dateEmbauche"/>
    Modératrice Java - Struts, Servlets/JSP, ...

  13. #13
    Membre du Club
    Inscrit en
    Novembre 2008
    Messages
    132
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 132
    Points : 43
    Points
    43
    Par défaut
    maintenant je comprend l'utilité de ce paramètre,merci.
    j'essai à vérifier une chaine contenant l'email saisi par l'utilisateur dans la page jsp pour cela j'ai fait un test si un email valide ou pas,mais ca marche bien,Voila le code:

    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
    package monPackage;
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;
    public class MaClasse {
     
    	private Pattern pattern;
    	private Matcher matcher;
    	public boolean checkMailAddress(String mail){
    		pattern = Pattern.compile("^([\\w\\d\\-\\.]+)@{1}(([\\w\\d\\-]{1,67})|([\\w\\d\\-]+\\.[\\w\\d\\-]{1,67}))\\.(([a-zA-Z\\d]{2,4})(\\.[a-zA-Z\\d]{2}) )___FCKpd___0quot;");
    		matcher = pattern.matcher(mail);
    		return matcher.find();
    		}
    public static void main(String[] args) {
    	String mail = "barhmia@hotmail.com";
    	MaClasse checker = new MaClasse();
    	if(checker.checkMailAddress(mail)){
    		System.out.println("Valid email address");
    		}else{
    			System.out.println("Invalid email address");
    			}
    }
    	}
    aidez-moi svp

  14. #14
    Expert éminent

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Points : 7 778
    Points
    7 778
    Par défaut
    Pour valider la saisie d'un email, je te conseille d'utiliser la méthode isEmail de la classe GenericValidator livrée avec Struts et plus précisement dans le jar commons-validator :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if ( !GenericValidator.isBlankOrNull(mail) && !GenericValidator.isEmail(mail) )
    {
      errors.add(...) ;
    }
    Ceci t'évite d'avoir à trouver le bon code pour faire ce genre de validation.
    Modératrice Java - Struts, Servlets/JSP, ...

  15. #15
    Membre du Club
    Inscrit en
    Novembre 2008
    Messages
    132
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 132
    Points : 43
    Points
    43
    Par défaut
    ca marche bien
    il me reste de récupérer toutes les propriétés de mon ActionForm dans Action afin de fournir le modèle(DAO de hibernate) pour réaliser l'ajout alors j'ai trouvé 2 méthodes soit récupération par l'objet request(paramètre de la méthode execute)en écrivant par exemple:
    String nom=request.getParameter("nom");
    soit récupération par l'objet form(l'autre aussi paramètre de la méthode execute) en écrivant par exemple:
    MonActionForm employe=(MonActionForm) form;
    String nom=employe.getNom();

    ma question:
    quelle est la manière je dois faire ?

    après l'ajout je devrai faire 2 choses:
    1)rediriger l'utilisateur vers une autre page contenant toutes les valeurs ajoutées.
    2)un information sera envoyée à la boite email de l'utilisateur fournie avec les différentes valeurs ajoutées dans la base de données.

    comment je les dois faire ?

Discussions similaires

  1. Validation de formulaire avec spring 2.5 et struts 2
    Par miles_ dans le forum Spring Web
    Réponses: 4
    Dernier message: 02/02/2010, 18h27
  2. validation de formulaire avec ajax
    Par debutant_linux dans le forum Ruby on Rails
    Réponses: 1
    Dernier message: 25/01/2008, 15h01
  3. Réponses: 4
    Dernier message: 04/09/2007, 08h55
  4. Réponses: 1
    Dernier message: 21/05/2007, 19h57
  5. Valider un formulaire avec la touche entree
    Par djedie dans le forum ASP.NET
    Réponses: 5
    Dernier message: 29/03/2007, 10h38

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