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 :

Passage d'éléments de formulaire entre 2 actions [FAQ]


Sujet :

Struts 1 Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 29
    Par défaut Passage d'éléments de formulaire entre 2 actions
    Bonjour.

    j'ai pas mal cherché sur le forum, mais je n'ai pas trouvé la réponse à mon problème, alors je me décide à poster.

    J'ai des données réparties sur plusieurs pages. Chaque page possède son formulaire et son action. J'utilise aussi le dispatchAction pour avoir plusieurs comportements en rapport avec un formulaire.
    Mon problème est que je n'arrive pas à passer d'information d'un formulaire à l'autre quand je passe d'une action à l'autre. En création ce n'est pas un problème, mais en modification il en va autrement...

    Le cheminement que je cherche à avoir est le suivant :

    Action 1 : Chargement des données, remplissage du formulaire
    Page 1 : Affichage des données, modification
    Action 1 : Récupération du formulaire, sauvegarde des données
    Action 2 : Chargement des données, remplissage du formulaire 2
    Page 2 : Affichage des données.


    J'utilise le fichier Struts-config suivant :
    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
     
    <form-bean name="beanStep1" type="package.MonBean1"/>
    <form-bean name="beanStep2" type="package.MonBean1"/>
     
    <action path="/nodeCreateStep1" type="package.Action1"
                name="beanStep1"
                scope="request"
                validate="false"
                parameter="dispatch">
          <forward name="page" path="/jsp/Step1.jsp" />
          <forward name="next" path="/nodeCreateStep2.do" redirect="true"/>
    </action>
     
    <action path="/nodeCreateStep2" type="package.Action2"
                name="beanStep2"
                scope="request"
                validate="false"
                parameter="dispatch">
          <forward name="page" path="/jsp/Step2.jsp" />
          <forward name="next" path="/nodeCreateStep3.do" redirect="true"/>
    </action>
    Il y a des paramêtres qui sont présents dans les deux formulaires :
    dispatch et id

    dispatch me permet de distinguer l'entrée dans le formulaire (et le chargement des données) de la sortie (et la sauvegarde des données).
    id est l'identifiant de mon objet à modifier, élément clé pour retrouver les données dans la base.

    Le premier formulaire passe très bien, le chargement est ok, et la sauvegarde après modification est effectuée. Là où ça ne passe plus, c'est quand le forward est déclenché après sauvegarde.
    A première vue, la redirection est brute, le formulaire n'est pas passé à mon action, et sans dispatch, je ne sais pas si je dois charger ou sauvegarder les données du formulaire, et sans id, je ne sais pas quelles données utiliser...
    Que toutes les données ne passent pas d'un bean à l'autre, c'est normal, mais que les données communes ne soient pas passées non plus m'étonne davantage. Il semblerait que la requête soit débarassée de tout ses paramêtres.

    Des suggestions ?

    Je précise que si j'enlève le redirect=true, je récupère bien mes éléments, mais cette solution ne me plait que moyennement. Je préfèrerais éviter de me trainer la même URL d'un bout à l'autre de mon application...
    Il doit bien y avoir un moyen de passer des paramêtres dans un forward, non ?

  2. #2
    Membre chevronné
    Avatar de grishka
    Inscrit en
    Janvier 2003
    Messages
    285
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 285

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 29
    Par défaut
    Merci, mais...

    J'ai voulu essayer cette solution. Il a d'abord fallu que je récupère une version plus à jour de struts, celle que j'utilisais était la 1.2.4 (qui ne comprenait pas la classe ActionRedirect). Mais quand j'ai voulu mettre la librairie sur le serveur, on m'a fait comprendre que ce n'était pas possible.

    Je travaille au dessus d'une appli qui utilise Struts 1.2.4, et il n'est pas question de modifier la version de struts au risque d'avoir des erreurs dans cette appli.
    Il me faut donc trouver une autre solution...

    Si vous avez d'autres idées, je suis preneur.

  4. #4
    Membre chevronné
    Avatar de grishka
    Inscrit en
    Janvier 2003
    Messages
    285
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 285
    Par défaut
    ben tu récupères le code source de cette Classe et tu l'intègres dans ton projet. Je doute qu'il y ait une incompatiblité énorme entre la 1.2.7 et la 1.2.4... Au pire tu adaptes, le code n'est surement pas compliqué. Et surtout tu documentes histoire de virer facilement la classe une fois passé en release supérieure

  5. #5
    Membre confirmé Avatar de Resyek
    Inscrit en
    Juillet 2004
    Messages
    97
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 97
    Par défaut
    Bonsoir,

    Je suis actuellement sur un problème quasiment similaire, auquel je ne trouve malheureusement pas de réponse (après avoir cherché sur dvp.com, dvp.net, google & co...).

    Voici l'histoire simplifiée : J'ai des formulaires (AForm, BForm, CForm etc.), héritant chacun d'un formulaire (MainForm, qui hérite lui de ActionForm).
    J'ai déclaré dans MainForm un attribut X.
    Chacune de mes JSP (A.jsp, B.jsp, etc.) présente ce champ X.
    Lorsque l'utilisateur remplit un formulaire (n'importe où), j'ai besoin que le champ X soit
    1. Utilisé dans mon action
    2. Pré-rempli, par la suite, dans toutes les pages où il naviguera.


    J'ai bien vu les problématique de scope="session" et scope="request", mais j'ai deux problèmes :
    • Mon MainForm n'est associé, dans le struts config, à aucune action, vu que j'hérite de celui ci
    • Je ne vois pas où je pourrais mettre un scope sur un formulaire dans le struts config


    Je précise que :
    • j'utilise une "MainAction" qui hérite de "Action", mais cette action est vide.
    • J'ai déclaré mon MainForm dans le struts config


    Quelqu'un aurait-il une idée pour résoudre mon probleme ?

Discussions similaires

  1. [1.x] Validation du même formulaire entre deux actions
    Par Ontolingua dans le forum Symfony
    Réponses: 9
    Dernier message: 04/10/2010, 10h50
  2. passage d'objet entre deux actions
    Par sousoujda2 dans le forum Struts 1
    Réponses: 6
    Dernier message: 07/03/2008, 17h17
  3. Formulaire gardé entre les actions
    Par Toudy dans le forum Struts 1
    Réponses: 7
    Dernier message: 09/02/2007, 08h28
  4. [VB6] Passage d'éléments entre deux listes
    Par Nesejet dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 01/08/2006, 11h41
  5. [formulaire] Modifier l'action engendrée par la touche [Entrée]
    Par FrankOVD dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 12/05/2006, 16h58

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