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

Spring Web Java Discussion :

[Spring MVC] aller-retour entre AbstractWizardFormController et SimpleFormController


Sujet :

Spring Web Java

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 33
    Points : 25
    Points
    25
    Par défaut [Spring MVC] aller-retour entre AbstractWizardFormController et SimpleFormController
    Bonjour,

    Je travaille actuellement sur un projet avec Spring MVC.

    J'ai l'enchainement de pages suivant pour réaliser une recherche en base LDAP
    sur des personnes:

    page 1 : recherchePersonne.jsp
    Sélection de mes personnes.
    deux champs de saisie nom et prenom.
    Un bouton de validation lance la recherche et me dirige sur la page 2.

    page 2 : resultatRecherchePersonne.jsp
    Tableau présentant les personnes trouvées.
    Chaque ligne du tableau dispose d'une checkbox permettant de sélectionner les
    personnes effectivement "intéressantes" dans le cadre de la recherche.

    page 3 : resultatSelectionPersonne.jsp
    Tableau présentant les personnes sélectionnées.

    Ces trois pages sont gérées par un controller de type AbstracWizardFormController
    qui permet de gérer l'enchainement en gardant notamment l'objet "modèle" associé
    à chaque page jsp en session. Cet objet modèle est un bean associé au controller
    dans le fichier monProjet-servlet.xml de la façon suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <property name="commandClass"
    			value="monProjet.monPackage.PersonneEtListePersonne"/>
    <property name="commandName" value="personneEtListePersonne" />
    <property name="sessionForm" value="true" />
    Cette classe contient
    un attribut = objet Personne
    + deux ArrayList d'objets Personne:
    listePersonnesTrouvees
    listesPersonnesSelectionnees

    De plus, toujours dans ce même fichier, j'autorise la personne à naviguer
    dans l'assistant sans validation :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    <property name="allowDirtyBack" value="true"/>
    <property name="allowDirtyForward" value="true" />

    Sur la page 3, à partir des personnes sélectionnées, l'utilisateur pourra éditer
    au format désiré cette liste. Plusieurs liens href lui permettent d'accéder à
    des pages de paramétrage. Notamment une qui va lui permettre de sélectionner les
    attributs (comme nom, prenom, age, organisme, fonction, etc...) qu'il veut voir
    apparaitre dans le rapport à éditer.

    Cette page "selectAttributs.jsp" (on va dire page 4)se présente sous forme
    d'un tableau, listant les attributs accessibles.
    Les attributs qui seront utilisés dans le rapport doivent
    être cochés par l'utilisateur. Une fois la sélection d'attributs faite (cases
    cochées), l'utilisateur, en cliquant sur "valider" revient sur la page des personnes
    sélectionnées.
    La page "selectAttributs.jsp" est gérée par un simpleFormController
    (elle ne fait pas partie du workflow obligatoire et ne rentre donc pas dans
    l'enchainement géré par le AbstractWizardFormController). Le retour sur la page 3
    (resultatSelectionPersonne.jsp) se fait de la façon suivante (géré automatiquement par
    Spring MVC) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <property name="successView">
    		<value>resultatSelectionPersonne</value>
    </property>
    Le "modèle" objet associé à ma page 4 (de la même façon que ci-dessus dans le fichier
    monProjet-servlet.xml) est une ArrayList d'objets "AttributPersonne"

    Problème 1, résolu mais qui annonce le problème 2 :
    Lorsque je passe de la page 3 à la page 4, l'objet personneEtListePersonne est
    perdu de la session, sur retour vers la page 3, ma page ne s'affiche plus et
    j'ai une exception levée. Je suis obligé de le mettre en session, le récupérer dans mon
    simpleFormController (methode formBackingObject) sous le nom toto et sur la validation de la page 4
    (methode onSubmit) faire ce qui suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    vModeleEtVue.setViewName("resultatSelectionPersonne");
    vModeleEtVue.addObject("personneEtListePersonne", toto);
     
    return vModeleEtVue;
    Problème 2(et qui fait l'objet de ma question) :
    Je reviens bien sur ma jsp resultatSelectionPersonne.jsp, elle affiche bien
    mes personnes sélectionnées, je récupère bien les attributs sélectionnés en
    session mais je ne peux plus naviguer entre mes pages 1, 2 et 3. J'ai l'impression
    que le contexte de mon AbstractWizardFormController est perdu. En cliquant
    sur précédent je reste sur ma page 3.
    Avez-vous déjà rencontré ce problème, et bien sûr avez vous une solution à
    me proposer? Merci par avance.
    J'apprend... j'apprend...

  2. #2
    Rédacteur
    Avatar de Hikage
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    1 177
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 177
    Points : 6 301
    Points
    6 301
    Par défaut
    Si tu en as la possibilité, j e te conseille de regarder du coté de Spring Web Flow, un module complémentaire à Spring MVC qui devrait justement résoudre tes problèmes
    Hikage
    SCJP / SCWCD & SCWSJD Certified / Spring Framework Certified
    [Personal Web] [CV]

    F.A.Q Spring Framework - Participez !

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 33
    Points : 25
    Points
    25
    Par défaut
    Merci,

    je vais regarder ce que peut m'apporter Spring Web Flow.

    Mais n'y a t'il pas un moyen de gérer ça directement dans l'abstractWizardFormController? En effet, mes allers-retours entre les pages 1, 2 et 3 se fait sans problème tant que je ne suis pas allé voir la page 4. Ce qui m'embête est le fait que le passage à la page 4 se fait sans passer le paramètre _finish à aucun moment dans la requête (mon lien est un simple lien href vers cette fameuse page 4), théoriquement la methode processFinish() de mon assistant n'est pas appelée et je devrais toujours pouvoir accéder aux données de mon modèle.
    J'apprend... j'apprend...

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 33
    Points : 25
    Points
    25
    Par défaut
    Bonjour,

    J'ai utilisé finalement spring web flow. ça a l'air trés bien.
    Je rencontre par contre un problème pour capter un événement sur changement de valeur d'une liste <form:select> (dans mon flow, je voudrais capter l'événement pour lancer un traitement avant de revenir sur ma page (contenant la liste) mise à jour par mon traitement).
    habituellement (sur un bouton) je peux faire ça :

    <input type="submit" class="button" name="_eventId_valider" value="Valider">
    et capter l'événement dans mon fichier de flow de la façon suivante :
    <transition on="valider" to="startCreerPers"/>

    Par contre sur le <form:select> comment faire? Merci d'avance, je désespère...
    J'apprend... j'apprend...

  5. #5
    Membre régulier Avatar de dgouyette
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    75
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 75
    Points : 89
    Points
    89
    Par défaut
    La solution n'est peut etre pas en spring mais en java script

    en ajoutant l'attribut suivant sur ton select

    onChange=document.form.submit()

Discussions similaires

  1. [XL-2007] navigation aller-retour entre application VBA et classeur Excel
    Par pithèque dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 26/01/2012, 06h01
  2. Réponses: 3
    Dernier message: 20/05/2008, 15h28
  3. Aller retour entre fenêtres
    Par lili2704 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 19/03/2008, 17h41
  4. [Spring MVC] problème SimpleFormController
    Par sothea dans le forum Spring Web
    Réponses: 1
    Dernier message: 15/05/2007, 17h38
  5. Réponses: 2
    Dernier message: 16/02/2006, 10h29

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