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 :

Validation formulaire via fichier XML


Sujet :

Struts 2 Java

  1. #1
    Membre régulier
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2011
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2011
    Messages : 97
    Points : 75
    Points
    75
    Par défaut Validation formulaire via fichier XML
    Bonjour à tous,
    Je suis nouvel utilisateur de Struts2 (avec Hibernate), et je rencontre des problèmes concernant la validation de mes formulaires.
    Ci dessous, les fichiers concernés (tous dans le package fr.view) :

    ClientAction.java
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    public class ClientAction extends ActionSupport {
     
    // Accesseurs, données membres etc...
     
    public String readAll() {
            clientsList = new ArrayList<Client>();
            clientsList = clientManager.selectAll();
     
            return SUCCESS;
        }
    ClientAction.properties :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    errors.invalid=${getText(fieldName)} non valide.
    errors.required=${getText(fieldName)} est obligatoire.
    errors.number=${getText(fieldName)} doit etre compose de chiffre.
    errors.range=${getText(fieldName)} doit etre plus recent que le ${min}.
    ClientAction-validation.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
    <?xml version="1.0" encoding="UTF-8"?>
     
    <!DOCTYPE validators PUBLIC
      		"-//OpenSymphony Group//XWork Validator 1.0.2//EN"
      		"http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">
    <validators>
        <field name="client.nom">
            <field-validator type="requiredstring">
                <param name="trim">true</param>
     
    <!--            <message>Nom requis</message>-->
                <message key="errors.required" />
            </field-validator>
        </field>
        <field name="client.prenom">
            <field-validator type="requiredstring">
                <param name="trim">true</param>
    <!--            <message>Prénom requis</message>-->
                <message key="errors.required" />
            </field-validator>
        </field>
    </validators>
    struts.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
    <package name="Client" namespace="/dossier/clients" extends="struts-default">
     
    <!--		 Action de l action de référence -->
            <default-action-ref name="getAll" />
     
    <!--     *****   AFFICHAGE DES PAGES   ************-->
     
            <action name="getAll" class="fr.view.ClientAction" method="readAll">
                <result name="success" type="redirect">
                    <param name="location">/content/dossier/clients/getAll.jsp</param>    
                </result>
            </action>
     
    <!--     *****   ACTIONS DES PAGES   ************-->
     
            <action name="client_*" class="fr.view.ClientAction" method="{1}">
                <result name="success">/content/dossier/clients/result/success.jsp</result>
                <result name="error">/content/dossier/clients/result/error.jsp</result>
    <!--            <result name="input">/content/dossier/clients/add.jsp</result>-->
            </action>
        </package>
    En voulant afficher ma page /dossier/clients (qui va appeler mon action "getAll") j'ai l'erreur : No result defined for action fr.view.ClientAction and result input. J'ai bien compris que c'est parce que je n'avais pas mis le <result name="input"> . Je l'ai mis, ma page /dossier/clients s'affiche bien.
    Mais probleme : dans mon <action name="getAll"> j'appelle (en théorie) une méthode "readAll()" de ma classe ClientAction. Or, je remarque qu'elle n'est plus appelée, ce qui me plante donc le fonctionnement de mon application ...

    Ma question est simple : comment faire pour tout faire fonctionner s'il vous plait ?

    J'ai l'impression que j'ai du mal configurer mon struts.xml, car je me sers d'action pour faire un simple affichage de page ("getAll" par exemple, mais j'en ai d'autres), je me serais trompé quelque part ?

    Merci à tous.

  2. #2
    Nouveau membre du Club
    Homme Profil pro
    Analyste assurance qualité logiciel
    Inscrit en
    Juillet 2011
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Analyste assurance qualité logiciel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2011
    Messages : 22
    Points : 27
    Points
    27
    Par défaut
    Bonjour,

    Pour faire simple, ton fichier de validation XML est appelé à chaque fois que la classe action associée est appelée, et cela quelle que soit le nom de l'action associée à ta classe action et quelle que soit la méthode appelée.

    Si ta validation est à effectuer sur une méthode de cette classe action, alors je te conseille de renommer ton fichier validation xml selon le schéma suivant : actionclass-methode-validator.xml . De cette manière la validation ne se fera que lorsque la méthode de la classe action sera appelée. Normalement pour l'affichage, il n'y a pas besoin de faire de vérifications (d'ailleurs ton affichage est une action en soit).

    Ensuite, ta fonction readall me parait un peu légère. Que se passe t'il si ta liste est vide ? Aucune vérification n'est faite à ce niveau là.

    Enfin, pour ton action getall, pourquoi faire une redirection ? tu affiches simplement une page, la redirection me parait inutile dans ce cas là.

    En ce qui concerne l'action par défaut, je ne m'en suis jamais servi, j'appelle toujours une action lorsque j'affiche une page. Pour cela je ne suis pas en mesure d'apporter mon aide. Juste une piste d'information, cette erreur que tu a peux parfois venir d'un problème de variable manquante entre le formulaire la classe action. Une vérification est faite au niveau des noms et du nombre et s'il y a un petit delta entre la jsp et le java, tu peux avoir cette erreur.

    Bonne continuation.

  3. #3
    Membre régulier
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2011
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2011
    Messages : 97
    Points : 75
    Points
    75
    Par défaut
    Bonjour bugsman,
    Tout d'abord, merci d'avoir répondu.

    Citation Envoyé par bugsman Voir le message
    ton fichier de validation XML est appelé à chaque fois que la classe action associée est appelée, et cela quelle que soit le nom de l'action associée à ta classe action et quelle que soit la méthode appelée.
    Merci de cette précision

    Citation Envoyé par bugsman Voir le message
    Si ta validation est à effectuer sur une méthode de cette classe action, alors je te conseille de renommer ton fichier validation xml selon le schéma suivant : actionclass-methode-validator.xml
    Je ne savais pas ceci, j'ai essayé et effectivement ca marche bien. Par contre, la je vais être obligé de créer un fichier par méthode, il n'y aurait pas un moyen de créer un seul fichier mais d'indiquer qu'on ne vas pas valider certaines méthodes ? Il me semble avoir vu un @SkipValidation (quelque chose dans le genre), tu aurais plus d'infos la dessus stp ?

    Citation Envoyé par bugsman Voir le message
    Ensuite, ta fonction readall me parait un peu légère. Que se passe t'il si ta liste est vide ? Aucune vérification n'est faite à ce niveau là.
    C'est tout a fait normal, j'ai allégé au max pour ne mettre que l'essentiel (je suis encore en période de dev, je fais d'abord quelque chose de minimaliste qui marche, avant de le paufiner )

    Citation Envoyé par bugsman Voir le message
    Enfin, pour ton action getall, pourquoi faire une redirection ?
    Ce que j'ai mis plus haut n'est plus ce que j'ai dans mon code, c'était un test. Maintenant j'ai ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <action name="getAll" class="fr.view.ClientAction" method="readAll">
                <result name="success">/content/dossier/clients/getAll.jsp</result>
            </action>
    J'ai maintenant bien compris que mon validator est appelé dès que j'utilise une méthode de ma classe action, mais comme je l'ai indiqué un peu plus haut, j'aimerais bien ne créer qu'un seul fichier (car j'ai plusieurs fichiers action a valider ...) et "sauter" des vérification pour les action de mon choix. C'est possible ?

  4. #4
    Membre régulier
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2011
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2011
    Messages : 97
    Points : 75
    Points
    75
    Par défaut
    C'est bon j'ai trouvé !
    J'ai donc laissé un seul fichier ClientAction-validation.xml et j'ai annoté les méthodes que je ne voulais pas vérifier dans mon fichier ClientAction.java, en utilisant l'annotation "@SkipValidation" sur chacune de mes méthodes, ca marche nikel

    Merci beaucoup pour tes réponses, elles m'ont été utiles

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Analyste assurance qualité logiciel
    Inscrit en
    Juillet 2011
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Analyste assurance qualité logiciel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2011
    Messages : 22
    Points : 27
    Points
    27
    Par défaut
    Content d'avoir pu aider

    Au passage j'aurais appris quelque chose de plus sur Struts 2

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

Discussions similaires

  1. [Xerces][C++][DTD][XSD] Validation d'un fichier XML
    Par xxiemeciel dans le forum Autres éditeurs
    Réponses: 6
    Dernier message: 04/08/2010, 20h10
  2. Réponses: 1
    Dernier message: 08/06/2008, 19h05
  3. [DOM] Problème de validation d'un fichier xml
    Par madjidri dans le forum Format d'échange (XML, JSON...)
    Réponses: 1
    Dernier message: 30/04/2008, 00h39
  4. Formulaire PDF --> Fichier XML
    Par orke22 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 29/04/2008, 11h19
  5. [DOM] php4 : validation d'un fichier XML par rapport à un XSD
    Par nannous dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 25/02/2008, 09h43

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