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 :

attributs de requêtes et méthode validate()


Sujet :

Struts 1 Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 21
    Points : 17
    Points
    17
    Par défaut attributs de requêtes et méthode validate()
    Bonjour,

    J'ai un problème dans mon passage d'attributs d'une page à une autre, conjointement avec la méthode validate(). J'ai cherché un peu sur le forum mais je n'ai pas trouvé de réponses à mon problème.

    Dans une application web, j'exécute à un moment une configuration, j'enchaine donc plusieurs actions.

    Lors du lancement de la configuration, je déclenche l'action "initialisation.do".
    ça m'amène sur une page (on l'appellera "page1") où je configure quelques éléments, dont des types de fiches.
    Lors de la validation de cette page, j'appelle l'action "page1.do". Dans cette action, je récupère les informations fournies en page 1, et je prépare la page 2.
    J'effectue entre autre cette portion de code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    request.setAttribute("list_type_form", list_formtypes_tab);
    où list_formtypes_tab est un tableau contenant des informations sur les list de fiches.

    La page 2 s'affiche sans problèmes, avec les éléments souhaités. Mais, quand je valide le formulaire de la page 2 avec des informations incorrectes, je reviens sur la page 2, avec le message d'erreur souhaité, mais avec une autre erreur, le texte :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [ServletException in:/forms/config_projet/content/page2.jsp] Cannot find bean list_type_form in any scope'
    Lorsque, dans l'action "page1.do", je place l'attribut "list_type_form" dans la session, l'erreur n'apparait plus. Logique.

    Mais ça m'ennuie de placer l'attribut dans la session, alors qu'il sert uniquement dans la page 2.
    J'ai essayé de replacer l'attribut dans la requete à la page 2, en effectuant ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    request.setAttribute("list_type_form", request.getAttribute("list_type_form"));
    , mais ça marche pas

    Pour résumer :
    je souhaiterais ne pas avoir à passer un attribut en session, pour pouvoir l'utiliser sur page2.jsp même après une validation loupée de formulaire.

    Merci de votre aide, et n'hésitez pas à demander des renseignements complémentaires

  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
    Tu peux faire appel à l'action de path /page1.do dans l'attribut input :
    Ainsi, lorsqu'il y aura une erreur de validation, l'Action qui constitue la liste et qui la met dans le scope request sera de nouveau exécutée.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 21
    Points : 17
    Points
    17
    Par défaut
    Citation Envoyé par c_nvy Voir le message
    Tu peux faire appel à l'action de path /page1.do dans l'attribut input :
    Ainsi, lorsqu'il y aura une erreur de validation, l'Action qui constitue la liste et qui la met dans le scope request sera de nouveau exécutée.
    avant tout, merci de ta réponse.

    avant, dans mon input, j'avais
    J'ai tenté d'appliquer ce que tu m'as conseillé. Je comprends l'intérêt et je pensais que ça règlerait mon problème.

    Mais, en pratique, ça plante

    Ce qui se passe. Je suis sur page2.jsp, je me plante dans mon formulaire. L'action page1.do est donc refaite. Mais l'action page1.do plante, car page1.do est en deux parties : la première traite les informations de page1.jsp, et la seconde prépare les informations de page2.jsp
    je suppose que comme l'action n'a plus les informations de page1.jsp, elle n'arrive pas à s'effectuer.
    Je me retrouve alors sur la page 1.jsp, avec le message d'erreur qui apparait lorsque les informations de page 1.jsp ne sont pas complètes.

    Faut il que je sépare action1 en deux actions : traitementpage1.do et preparationpage2.do, et que je mette dans mon input preparationpage2.do ?

  4. #4
    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
    Citation Envoyé par phoenix_stealer Voir le message
    Faut il que je sépare action1 en deux actions : traitementpage1.do et preparationpage2.do, et que je mette dans mon input preparationpage2.do ?
    Si tu n'as pas besoin des informations de la page 1 pour préparer la page 2, tu peux effectivement faire ceci.

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 21
    Points : 17
    Points
    17
    Par défaut
    Citation Envoyé par c_nvy Voir le message
    Si tu n'as pas besoin des informations de la page 1 pour préparer la page 2, tu peux effectivement faire ceci.
    Je pense que je peux les séparer sans trop de problèmes, les informations de la page 1 étant stockées en bdd, je peux les récupérer dans la bdd dans la préparation de la page 2.

    Je trouve juste ça "lourd" de devoir créer deux actions là où avoir une action avec deux méthodes (récupérationDonnées et préparationDonnées) me semblait plus clair.

    D'un point de vue général, l'application web sur laquelle je travaille existe déjà depuis un bail, et ça devient un bordel sans nom, vu le nombre d'action qu'il existe. En créer de nouvelles m'ennuie un peu. (Surtout que le précédent codeur ne devait pas savoir ce qu'est un "package" )

    Enfin, si je trouve pas d'autres solutions, je vais faire une décomposition de l'action. Merci

  6. #6
    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 n'ai jamais testé mais si tu utilises une DispatchAction ou une LookupDispatchAction, tu peux essayer d'ajouter le paramètre avec le nom de la méthode au path de l'Action comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    input="/page1.do?nomDuParametre=preparationDonnees"

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 21
    Points : 17
    Points
    17
    Par défaut
    J'ai effectué le découpage, ça c'est fait plus simplement que je pensais, et ça fonctionne très bien.

    Le dispatchAction, c'est une autre solution qui peut être intéressante, mais qui peut être plus dur à comprendre pour un développeur struts débutant, je préfère donc séparer les Actions.

    Au moins, quand le prochain dev passera (si il y en a un), il comprendra peut être plus facilement "preparationPage2.do" que "page1.do?action=preparationPage2".
    Par contre, ça fait un gros tas de fichiers, à la fin.

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 01/05/2011, 23h50
  2. Réponses: 13
    Dernier message: 30/07/2007, 14h51
  3. Erreur de la méthode validate
    Par zizoux5 dans le forum Struts 1
    Réponses: 2
    Dernier message: 05/04/2007, 21h44
  4. Réponses: 5
    Dernier message: 04/07/2006, 10h17
  5. Cette requête est-elle valide?
    Par FrankOVD dans le forum Requêtes
    Réponses: 4
    Dernier message: 13/01/2006, 19h21

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