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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    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
    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 chevronné 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 : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Décembre 2006
    Messages : 332
    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 confirmé
    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
    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 chevronné 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 : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Décembre 2006
    Messages : 332
    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 confirmé
    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
    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 éprouvé

    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
    Par défaut
    bonjour

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

    cdlt

+ 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