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 :

[Struts 1.3] Passage de plusieurs paramètres


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
    Septembre 2009
    Messages
    230
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 230
    Par défaut [Struts 1.3] Passage de plusieurs paramètres
    Bonjour,

    J'ai une Action1 qui affiche une liste de personne avec struts-layout dans la JSP1.
    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
    22
    23
    24
    25
    26
    27
    28
     
    <layout:collection name="personneBeanList" styleClass="ARRAY" id="monObjet">
     
      <layout:collectionTitle title="" styleClass="tableau-titre">				
       <layout:collectionItem styleClass="tableau-cellule1">
        <layout:link action="detailPersonne" paramId="id" paramName="monObjet" paramProperty="identifiant">
          <layout:img src="detail.gif"  />
        </layout:link>
       </layout:collectionItem>
      </layout:collectionTitle>
     
      <layout:collectionTitle title="Nom" styleClass="tableau-titre">
        <layout:collectionItem property="nom" styleClass="tableau-cellule1"/>
      </layout:collectionTitle>
     
      <layout:collectionTitle title="Prenom" styleClass="tableau-titre">
        <layout:collectionItem property="prenom" styleClass="tableau-cellule1"/>
      </layout:collectionTitle>
     
      <layout:collectionTitle title="Matricule" styleClass="tableau-titre">
       <layout:collectionItem property="matricule" styleClass="tableau-cellule1"/>
      </layout:collectionTitle>
     
      <layout:collectionTitle title="Role" styleClass="tableau-titre">
       <layout:collectionItem property="role" styleClass="tableau-cellule1"/>
      </layout:collectionTitle> 	
     
    </layout:collection>
    tout fonctionne bien, lorsque je clique sur le lien, j'envoie dans Action2 l'identifiant de la personne que je récupère et là je dois affichée dans la JSP2 à la suite de Action2, la personne avec son nom, son prénom, son matricule, son role et d'autres informations.
    Grâce à l'identifiant, j'appelle un service LoadPersonne(id) qui va me remontée toutes les informations nécessaires à l'affichage.
    Enfin ma question, lors de l'Action1, j'avais DEJA toutes ces informations et je voudrais éviter de faire appel au service LoadPersonne dans Action2.

    Donc comment vous feriez pour faire passer dans la requête tout l'objet Personne ?? cela eviterait un appel à un service.
    je sais passer un paramètre dans l'url, l'identifiant par exemple mais comment faire passer tout l'objet Personne avec toutes ces propriètés remplis ???

    Tout aide, conseil, suggestions sont les bien venus....

  2. #2
    Expert confirmé

    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
    Par défaut
    Il existe une solution en utilisant une Map.

    Par exemple, dans la classe PersonneBean, tu peux ajouter une propriété de type Map qui contiendra les propriétés de la personne avec getter et setter, et tu peux alimenter cette map via le constructeur par exemple comme ceci :
    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
    22
    23
    24
    25
    private String identifiant ;
    private String matricule ;
    private String nom ;
    private String prenom ;
    private Map personneMap = new LinkedHashMap() ;
     
    public PersonneBean(String identifiant,String matricule,String nom,String prenom)
    {
        this.identifiant=identifiant;
        this.matricule=matricule;
        this.nom=nom;
        this.prenom=prenom;
        this.setPersonneMap(identifiant,matricule,nom,prenom) ;
    }
    public void setPersonneMap(String identifiant,String matricule,String nom,String prenom)
    {
        this.personneMap.put("id",identifiant) ;
        this.personneMap.put("matricule",matricule) ;
        this.personneMap.put("nom",nom) ;
        this.personneMap.put("prenom",prenom) ;
    }
    public Map getPersonneMap()
    {
        return this.personneMap ;
    }
    Lorsque tu constitues la collection de beans PersonneBean, tu fais appel au constructeur PersonneBean en lui passant les valeurs pour les propriétés identifiant,matricule, nom, prénom ...

    Dans la jsp :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <layout:link action="detailPersonne" name="monObjet" property="personneMap">
          <layout:img src="detail.gif"  />
    </layout:link>
    Et ensuite, pour récupérer les paramètres dans l'Action :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    String identifiant=request.getParameter("id") ;
    String nom=request.getParameter("nom");
    ...
    Attention cependant à ne pas mettre trop d'informations dans la Map car le nombre de caractères passés dans l'url est limité.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    230
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 230
    Par défaut
    malheureusement, ta solution ne marche pas. Le getter de la map
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public Map getPersonneMap()
    {
        return this.personneMap ;
    }
    est bien appelée lors de l'affichage de la page mais le setter de la map
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public void setPersonneMap(String identifiant,String matricule,String nom,String prenom)
    {
        this.personneMap.put("id",identifiant) ;
        this.personneMap.put("matricule",matricule) ;
        this.personneMap.put("nom",nom) ;
        this.personneMap.put("prenom",prenom) ;
    }
    n'est jamais appelée lorsque je clique sur le lien.
    Je rappelle qu'il n'y a pas de formulaire !!

    Tout aide, conseil, suggestions voir autres idées sont les bien venus....

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    230
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 230
    Par défaut
    ok, cela marche bien; j'avais oublié d'appeler le setter dans l'action qui construit cette liste avant d'afficher la page JSP car je n'aime pas utilisé un constructeur avec pleins d'arguments d'entrée....donc j'ai un constructeur par défaut et j'utilise les setters pour renseigner toutes les propriètés.

    est-ce que quelqu'un aurait une autre tactique ??
    car cela peut paraitre bizarre d'avoir les setters et getters pour toutes les propriètés et en plus une map qui comporte une partie de ces mêmes propriètés -> cela fait un peu doublon.......

Discussions similaires

  1. Passage de plusieurs paramètres dans un thread.
    Par deck_bsd dans le forum Windows
    Réponses: 17
    Dernier message: 09/10/2010, 09h38
  2. [iBatis] passage de plusieurs paramètres
    Par Syphys dans le forum Persistance des données
    Réponses: 1
    Dernier message: 04/06/2010, 12h00
  3. Réponses: 10
    Dernier message: 03/12/2009, 21h45
  4. bean:define passage de plusieurs paramètres
    Par Shixz dans le forum Struts 1
    Réponses: 2
    Dernier message: 01/08/2008, 15h57
  5. Passage de plusieurs paramètres dans un lien
    Par Greldinard dans le forum Langage
    Réponses: 4
    Dernier message: 09/10/2006, 17h28

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