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 2 Java Discussion :

Struts2 et la validation des formulaires


Sujet :

Struts 2 Java

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    160
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Octobre 2006
    Messages : 160
    Par défaut Struts2 et la validation des formulaires
    Bonjour à tous,

    Je me pose quelques questions concernant le mécanisme de validation de Struts2 :

    • Comme dans la première version de Struts, on peut effectuer un contrôle côté client via du Javascript. J'ai essayé la manip (validate=true dans le formulaire) mais je ne vois pas de changement par rapport à la validation "normale". N'y a t-il plus de popup qui s'affiche pour informer l'utilisateur des champs requis ?
    • Par défaut les messages affichés lorsque la validation a échoué sont placés au dessus du champ en question et sont centrés. Y a t-il moyen de "personnaliser" cet affichage ?


    Merci d'avance

  2. #2
    Membre actif
    Profil pro
    Développeur Java
    Inscrit en
    Juin 2008
    Messages
    86
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juin 2008
    Messages : 86
    Par défaut placer les messages d'erreur
    On peut placer le message d'erreur de chaque champ ou l'on veut.
    Par exemple pour un input avec name="email" se sera :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <s:fielderror>
                <s:param value="%{'email'}" />
            </s:fielderror>

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    160
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Octobre 2006
    Messages : 160
    Par défaut
    ok j'essaierai.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    160
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Octobre 2006
    Messages : 160
    Par défaut
    Bon je viens d'essayer, et ça ne marche pas. J'ai toujours les messages placés par défaut.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    160
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Octobre 2006
    Messages : 160
    Par défaut
    Je précise que je passe via un fichier xml de validation et non par la méthode validate() de mon action

  6. #6
    Membre actif
    Profil pro
    Développeur Java
    Inscrit en
    Juin 2008
    Messages
    86
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juin 2008
    Messages : 86
    Par défaut le probleme vient peut etre du validation.xml
    Ton xml a cette syntaxe?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <field name="email">
    <field-validator type="email">
              <message>Not a valid e-mail.</message>
          </field-validator>
     </field>
    Le nom du champ doit etre precisé

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    160
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Octobre 2006
    Messages : 160
    Par défaut
    Mon xml de validation est comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    <validators>
        <field name="username">
            <field-validator type="requiredstring">
                <message>Username is required</message>
            </field-validator>
        </field>
        <field name="password">
            <field-validator type="requiredstring">
                <message>Password is required</message>
            </field-validator>
        </field>
    </validators>
    et ma JSP comme celà :

    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
     
    <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
        pageEncoding="ISO-8859-1"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <%@ taglib prefix="s" uri="/struts-tags" %>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
    <title>Logon</title>
    </head>
    <body>
    <s:form action="Logon" validate="true"> 
      <s:textfield label="User Name" name="username"/>
      <s:password label="Password" name="password" />
      <s:submit/>
    </s:form>
    </body>
    </html>
    C'est un exemple qui vient du site d'Apache, je ne pense pas qu'il y ait d'erreur.

  8. #8
    Membre actif
    Profil pro
    Développeur Java
    Inscrit en
    Juin 2008
    Messages
    86
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juin 2008
    Messages : 86
    Par défaut
    Sur ton code je ne vois pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <s:fielderror>
                <s:param value="%{'username'}" />
            </s:fielderror>
    Mais si tu dis que t'as essayé alors je ne vois pas.
    Je fais du struts depuis juste presque une semaine.

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    160
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Octobre 2006
    Messages : 160
    Par défaut
    Oui, j'avais essayé mais sans succès.
    C'est quand même bizarre, on doit pouvoir en faire ce qu'on veut de ces textes sinon la validation automatique c'est pas si bien que ça ...

  10. #10
    Membre chevronné Avatar de ruscov
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Mars 2007
    Messages
    347
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Mars 2007
    Messages : 347
    Par défaut
    Quel est le nom de ton fichier de validation? Parce que le nom a beaucoup d'importance.

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    160
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Octobre 2006
    Messages : 160
    Par défaut
    Mon action s'appelle Logon.java et mon fichier de validation Logon-validation.xml

  12. #12
    Membre averti
    Inscrit en
    Avril 2008
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 18
    Par défaut
    tes tags struts2 utilisent des templates freemarker pour generer ensuite le code html resultat.
    C est dans ces templates freemarker que sont defini le design du composant finale, notamment l emplacement des messages d erreurs. Les tags on a leur disposition plusieurs type de template, diveisé en theme.

    Par defaut le theme utilisé est xhtml, qui fait des sauts de lignes apres le composants, et met les messages d erreurs a coté du composant. Le theme simple est celui qui met juste le champ de saisie de donnée et rien d autre(a quelque exception pres).

    Pour choisir directement l emplacement des messages d erreurs dans les JSP tu peux utiliser le tag:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <s:fielderror>
    </s:fielderror>
    Mais si tu ne mets que ca, la jsp va te mettre toutes les erreurs de champs a la suite.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <s:fielderror>
    <s:param>nomVariable</s:param>
    </s:fielderror>
    Si tu mets un parametre, il ne s affichera que les messages d erreurs liés au composant cité.


    Tu peux aussi normalement controllé la traduction des messages d'erreurs mais ca c est plus compliqué.

  13. #13
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    160
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Octobre 2006
    Messages : 160
    Par défaut
    OK. Mais alors quand est-il de la validation côté client lorsque l'on met "validate=true" dans le formulaire. Car en théorie c'est le javascript automatiquement généré qui va faire les premiers contrôles, mais en pratique je ne vois aucun changement. Dans Struts2, le javascript n'affiche pas une popup avec les champs qui ne sont pas bons ?

  14. #14
    Membre averti
    Inscrit en
    Avril 2008
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 18
    Par défaut
    as tu regarder les guides du site officiel de struts2? car j'ai l'impression que tu te fais des idées quand au fonctionnement de struts2.

    1) Ce n'est pas du javascript qui s'occupe de la validation dans Struts2. Il est peut etre possible de faire des choses en javascript, j'avoue ne pas m'etre interessé à ca. Mais concretement ce sont les intercepteurs struts2 qui lancent des méthodes qui récuperent les données des JSP et effectuent avec du bon(ou pas) code java les controles de validations (erreurs de conversion fait par defaut, et autres regles plus complexes à déclarer).

    2) Que veux tu dire par "validate=true" dans un formulaire? Je ne vois pas de situation ou il est necessaire de mettre ca dans Struts2.

    3) un petit merci fait toujours plaisir.

  15. #15
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    160
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Octobre 2006
    Messages : 160
    Par défaut
    1)Oui en effet, merci pour ton aide. J'ai été frustre sur ce coup

    2)Les balises <s:fielderror> que tu m'a indiqué fonctionne bien. Sauf que maintenant j'ai les messages en double (je pensais que les messages "par défaut" ne seraient plus présents). M'enfin bon on va pas s'étendre la dessus.

    3)Comme dans la première version de Struts, on peut en plus faire une validation côté client via un javascript généré automatiquement à partir des règles que l'on a définies dans le fichier XML. On fait appel à cette fonctionnalité en rajoutant le "validate=true" dans la balise du formulaire.
    Le "problème" c'est que ça a (apparemment) le même comportement au niveau des messages d'erreur que lorsque la validation se fait uniquement du côté serveur. D'où mon interrogation sur la possibilité d'afficher une bonne vieille popup des familles au lieu de garder les simples messages.

  16. #16
    Membre averti
    Inscrit en
    Avril 2008
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 18
    Par défaut
    hum juste sur le sujet des erreurs en double, vu que ne m interessant pas au javascript et a des popups d'avertissement que je trouve inutile (des messages d'erreurs rouges devraient etre assez parlant) je ne peux pas t aider a ce sujet.

    La balise <fielderrors/> permet d'afficher des messages d'erreurs a chaque fois qu elle est utilisée. Mais les tags struts2 cachent dans leur templates une balise similaire qui affiche elle aussi les messages d erreurs du composant, sauf si tu mets l'attribut theme="simple" dans ton composant.

    http://struts.apache.org/2.0.11.1/do...templates.html

    regarde un peu la liste officielle si tu as encore des problemes.

  17. #17
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    160
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Octobre 2006
    Messages : 160
    Par défaut
    ok merci

Discussions similaires

  1. [2.x] Avis sur la validation des formulaires
    Par stephan.78 dans le forum Symfony
    Réponses: 2
    Dernier message: 13/12/2012, 12h32
  2. [2.x] fournir et valider des formulaires par webservices
    Par david42 dans le forum Symfony
    Réponses: 3
    Dernier message: 01/03/2012, 09h11
  3. [2.x] Validation des formulaires
    Par pc.bertineau dans le forum Symfony
    Réponses: 7
    Dernier message: 03/08/2011, 15h19
  4. [ Struts ] Validation des formulaires
    Par jeoff dans le forum Struts 1
    Réponses: 2
    Dernier message: 28/07/2006, 12h43
  5. Classe ou script de validation des formulaires.
    Par __fabrice dans le forum Langage
    Réponses: 22
    Dernier message: 30/12/2005, 10h26

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