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 :

Valider qu'une partie des champs avec les annotations


Sujet :

Struts 2 Java

  1. #1
    Futur Membre du Club
    Inscrit en
    Août 2009
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 7
    Points : 7
    Points
    7
    Par défaut Valider qu'une partie des champs avec les annotations
    Bonjour,
    je débute en Struts 2, je bute sur un problème : comment, en utilisant la validation par annotations, ne valider qu'une partie des champs annotés ?

    En effet, j'ai un formulaire de création d'un élément. Cette création s'effectue en deux temps : sur le 1er écran, saisie de deux infos obligatoires puis une fois la saisie effectuée, un deuxième écran pour saisir des informations complémentaires.
    J'ai fait les deux écrans sur la même JSP et classe action. J'ai annoté ma classe pour valider les champs. Le problème au départ c'est que l'on ne saisi que deux infos donc le validateur de Struts 2 refuse d'aller sur l'écran suivant car les autres champs annotés ne valident pas.
    Quelqu'un connait t'il un moyen pour que selon une condition, qu'une partie des champs annotés ne soient pris en comptes ? Ou bien faudra t'il que je me développe moi même ce genre de validateur ?

    Merci d'avance

  2. #2
    Nouveau membre du Club
    Inscrit en
    Septembre 2006
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 48
    Points : 37
    Points
    37
    Par défaut
    Citation Envoyé par TucoBouch Voir le message
    Bonjour,
    je débute en Struts 2, je bute sur un problème : comment, en utilisant la validation par annotations, ne valider qu'une partie des champs annotés ?

    En effet, j'ai un formulaire de création d'un élément. Cette création s'effectue en deux temps : sur le 1er écran, saisie de deux infos obligatoires puis une fois la saisie effectuée, un deuxième écran pour saisir des informations complémentaires.
    J'ai fait les deux écrans sur la même JSP et classe action. J'ai annoté ma classe pour valider les champs. Le problème au départ c'est que l'on ne saisi que deux infos donc le validateur de Struts 2 refuse d'aller sur l'écran suivant car les autres champs annotés ne valident pas.
    Quelqu'un connait t'il un moyen pour que selon une condition, qu'une partie des champs annotés ne soient pris en comptes ? Ou bien faudra t'il que je me développe moi même ce genre de validateur ?

    Merci d'avance
    Je trouve que ta conception dans une seule action pas très bonne ni logique, pourquoi tu ne fais pas deux action différentes avec une JSP dont l'action du formulaire s'adapte ? Au pire tu fais deux JSP avec des actions différentes et tu exportes tes champs communs dans une autre JSP que tu inclus dans les deux autres.

    C'est ce que je ferais car je trouve cela plus maintenable.

    Sinon, tu as toujours le choix de coder ce que tu veux dans la méthode validate. Tu peux aussi utiliser l'ExpressionFieldValidator qui te permet d'apeller une méthode définie dans ton action. Tu peux enfin refaire le validator de STRUTS mais là tu prends pas la voie la plus facile.

    Pour info, j'ai aussi rencontré le besoin dans un autre cas et j'ai proposé l'évolution suivante dans le framework struts : https://issues.apache.org/struts/browse/WW-3180.

    Mais cette évol après recul, témoigne d'une mauvaise conception où j'ai fait comme toi, 1 classe action pour plusieurs types de soumission de formulaire. Donc conclusion, ne pas hésiter avec STRUTS à faire plusieurs classes action, même si à la fin on se retrouve avec beaucoup de classes (on a la classe ou pas que veux tu ?) au moins on fait du code simple et maintenable !!

  3. #3
    Futur Membre du Club
    Inscrit en
    Août 2009
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 7
    Points : 7
    Points
    7
    Par défaut
    Merci pour cette longue réponse.

    Pour répondre à la mauvaise conception : en fait, comme j'utilise directement les classes de mapping Hibernate donc avec tous les champs, la validation s'effectue sur toute la classe sans intervention possible. La meilleure solution serait de refaire une classe qui reprendrait les mêmes données que la classe de mapping.
    Pour la multiplication des classes actions, je suis archi pour, car par expérience, en mélangeant plusieurs actions dans la même, on se retrouve trés vite avec un code compliqué et pas maintenable.
    Pour l'ExpressionFieldValidator, je trouve ça pas terrible car on exporte la validation des annotations (ou du xml) dans une fonction java, donc je trouve qu'on perd en lisibilité, mais c'est certain que ça peut dépanner.
    Pour la méthode validate, je trouve "trop lourd" d'écrire du code Java pour valider les champs alors que le xml ou les annotations permettent cela trés simplement et rapidement.

    Encore merci

  4. #4
    Nouveau membre du Club
    Inscrit en
    Septembre 2006
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 48
    Points : 37
    Points
    37
    Par défaut
    Citation Envoyé par TucoBouch Voir le message
    Pour répondre à la mauvaise conception : en fait, comme j'utilise directement les classes de mapping Hibernate donc avec tous les champs, la validation s'effectue sur toute la classe sans intervention possible.
    Oulà, dans la plupart des cas, j'évite cela car après je me retrouve avec les problèmes que tu exposes : mélanger des considérations sur la présentation avec des considérations purement processus métier. Au niveau maintenabilité c'est horrible.
    Pour la méthode validate, je trouve "trop lourd" d'écrire du code Java pour valider les champs alors que le xml ou les annotations permettent cela trés simplement et rapidement.
    Une methode validate, c'est pas non plus la mort.

    le xml
    A non pas d'accord, je préfére encore une méthode validate que le XML.

    le xml ou les annotations permettent cela trés simplement et rapidement.
    Oui, c'est ce que j'ai dit à condition de bien séparer les objets hibernate des objet présentation et à faire plusieurs actions et non des actions uniques.
    C'est dommage que STRUTS ne fournissent pas les best practices, ca éviterait aux développeurs de se poser tous 10000 fois les mêmes questions.

Discussions similaires

  1. Réponses: 2
    Dernier message: 10/10/2013, 09h16
  2. [VBA-Excel]Avoir une boite de dialogue avec les arguments des fonctions ?
    Par EvaristeGaloisBis dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 29/05/2007, 09h37
  3. Limiter les droits à une partie des lignes d'une table
    Par Nabu dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 20/08/2006, 00h04
  4. Réponses: 4
    Dernier message: 19/10/2005, 11h26
  5. Exporter seulement une partie des données avec pg_dump ?
    Par Philhz dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 31/07/2004, 09h50

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