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 :

Transmission de paramètres entre actions sans utiliser la session


Sujet :

Struts 1 Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 62
    Points : 55
    Points
    55
    Par défaut Transmission de paramètres entre actions sans utiliser la session
    Bonjour,

    J'ai le problème suivant : un utilisateur peut lancer deux instances d'une même application struts. Ces-deux instances diffèrent par leur base de données. Lorsque l'utilisateur lance l'application, les deux instances sont différenciées par un paramètre passé dans l'URL.

    J'ai besoin de garder ce paramètre tout au long de la naviguation car dès que je fais une interrogation en base dans mes actions, je dois savoir quelle instance j'interroge. Je ne peux pas passer par le request.getSession().get* car vu que c'est le même utilisateur, le paramètre "instance" en session est partagé pour les deux utilisateurs.

    Au niveau de mon struts config, j'ai ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
       <action path="/Home" type="package.HomeAction" validate="false">
          <forward name="Home" path=".Home" redirect="true"/>
        </action>
    et le common definition

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    	<definition name=".Home" path="/jsp/layout/basicLayout.jsp">
    		<put name="treeContent" value=".TreeContent" type="definition"/>
    		<put name="mainContent" value="Prepare.do" type="string"/>
    	</definition>
    J'appelle mon action ainsi :
    http://localhost:8080/Home.do?instance=SAISIE

    Dans HomeAction.java, j'arrive bien à récupérer le paramètre via un request.getParameter("instance") mais lorsqu'il appelle ma deuxième action Prepare.do et que j'entre dans PrepareAction.java, je n'ai plus rien dans paramètres. J'ai essayé de le mettre dans attributes mais idem.

    Je voudrais transmettre le paramètre entre les actions sans passer par la session, mais est-ce possible ?

  2. #2
    Membre averti Avatar de florentB
    Homme Profil pro
    Développeur Java
    Inscrit en
    Décembre 2006
    Messages
    332
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Décembre 2006
    Messages : 332
    Points : 441
    Points
    441
    Par défaut
    Je pense que cela devrait fonctionner, c'est un peu barbare, mais bon ...

    Il faudrait que utilise un Formulaire père dans lequel tu défini le champ dont tu as besoin (instance).
    Tu fais hériter tes formulaires du form père.

    Struts, lors du premier appel :
    va mapper le paramètre et le mettre dans le form associé automatiquement.
    A chaque fois que tu vas faire un submit d'un formulaire, le paramètre devrait être transmis.

    J'ai pas vérifier, mais je pense que cela devrait fonctionner.


    FormPere contient le champ instance et accesseurs.
    FormFils hérite de FormPere.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 62
    Points : 55
    Points
    55
    Par défaut
    Merci pour l'idée. Le problème c'est que la naviguation entre pages ne se fait pas forcément après soumission de formulaires donc dans les cas où je clique sur un lien dans ma page, ça ne fonctionne pas.

  4. #4
    Membre averti Avatar de florentB
    Homme Profil pro
    Développeur Java
    Inscrit en
    Décembre 2006
    Messages
    332
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Décembre 2006
    Messages : 332
    Points : 441
    Points
    441
    Par défaut
    Dans le cas ou tu réalise un lien, rien ne t'empêche, dans l'url de destination, d'ajouter le paramètre voulu. Comme ca, quand tu cliques sur le lien (qui appelle une action), le paramètre est à nouveau transmis.
    Je pense qu'il y aura de petites astuces pour surmonter les pbs que tu rencontreras.
    N'hésite pas si je peux t'aider

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 62
    Points : 55
    Points
    55
    Par défaut
    C'est ce que je fais pour la page principale, cependant, c'est elle qui appelle la « sous-action » via le mapping struts et l'objet request qui est utilisé ne conserve pas les données.

  6. #6
    Membre habitué

    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 105
    Points : 134
    Points
    134
    Par défaut
    bonjour

    peut être que la solution est du coté des modules struts?

    cdlt

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 62
    Points : 55
    Points
    55
    Par défaut
    Citation Envoyé par willy78 Voir le message
    peut être que la solution est du coté des modules struts?
    C'est-à-dire ? Il faut que je regarde du côté des pages jsp ? Du mapping struts dans le struts_config.xml et common-definitions.xml ?

  8. #8
    Membre averti Avatar de florentB
    Homme Profil pro
    Développeur Java
    Inscrit en
    Décembre 2006
    Messages
    332
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Décembre 2006
    Messages : 332
    Points : 441
    Points
    441
    Par défaut
    Désolé, j'ai oublié de te dire : c'est encore plus lourd ... il faut aussi que tu fasses un champ hidden dans tous tes jsp ...

  9. #9
    Membre habitué

    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 105
    Points : 134
    Points
    134
    Par défaut
    Bonjour

    Le modules permettent dajouter une indirection dans l'url des pages:

    Dans la doc struts il ya tout ce qu'il faut pour utiliser les modules.
    Au lieu de http://localhost:8080/Home.do?instance=SAISIE
    tu as in truc du style:
    http://localhost:8080/saisie/Home.do

    En suite si tu utilise la taglib struts, elle calcule les liens par rapport au module (ici saisie), et donc dans tes actions tu n'a plus qu'a tester dans quel module tu est et déterminer l'instance.

    Cdlt

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 62
    Points : 55
    Points
    55
    Par défaut Solution
    Bon, j'ai opté pour une solution moins « classe » mais qui a le mérite de fonctionner sans trop modifier l'existant.

    // Récupération des paramètres depuis le helper et passage dans la requete
    ActionForward fwd = new ActionForward();
    String path = mapping.findForward("success").getPath();
    fwd.setRedirect(true);
    String params = "TEST";
    fwd.setPath(path + "?instance=" + params);

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 01/04/2014, 02h06
  2. Réponses: 6
    Dernier message: 26/02/2010, 21h12
  3. Réponses: 4
    Dernier message: 24/07/2009, 14h56
  4. Réponses: 10
    Dernier message: 06/07/2009, 13h56
  5. Réponses: 2
    Dernier message: 26/06/2007, 12h00

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