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] Savoir quel link a lancé l'action


Sujet :

Struts 1 Java

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    746
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 746
    Points : 316
    Points
    316
    Par défaut [Struts] Savoir quel link a lancé l'action
    Bonjour,

    Je suis sous Struts, et je viens de faire un formulaire qui m'affiche une liste de personnes dans un select, et qui après validation m'affiche une vue en fonction de la personne selectionnée.

    Ce que j'aimerai c'est réutiliser ce formulaire de choix de personne, mais le faire aller sur une autre vue.

    je voudrais avoir ce menu :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <html:link action="accueil">Accueil</html:link> |<html:link action="choixAgent">Gestion arrêts</html:link> | html:link action="choixAgent">Base du personnel</html:link>
    Voici la definition de l'action :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     <action input="/choixAgentForm.jsp" name="ChoixAgentForm" path="/choixAgent" scope="session" type="com.myapp.struts.Action.ChoixAgentAction">
                <forward name="afficheListeAgents" path="site.choixAgentForm.page"/>
                <forward name="afficheListeArrets" path="site.listeArretsAgent.page"/>
            </action>
    l'Action en question :
    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
     
     public ActionForward execute(ActionMapping mapping, ActionForm  form, HttpServletRequest request, HttpServletResponse response) throws Exception {
     
            int id=0;
     
            if (request.getParameter("idAgent")!=null)
                id = Integer.parseInt(request.getParameter("idAgent"));
     
            if (id>0){
                // récupère la liste des arrets de l'agent choisi et la place en request
                ListeArrets liste = new ListeArrets();
                liste.initListeArretsAgent(id);                 
                request.setAttribute("listeArrets",liste);
     
                // Récupère le Bean de l'agent et le place en request
                AgentBean agent = new AgentDAO().getAgentByNo(id);
                request.setAttribute("agent",agent);
     
                return mapping.findForward("afficheListeArrets");
            } else{
                ChoixAgentForm c=(ChoixAgentForm) form;
                c.setListeAgents(new AgentMetier().getListePourSelect());
                return mapping.findForward("afficheListeAgents");            
            }   
      }
    Je voudrais donc pouvoir placer un paramètre à mes link situés dans le menu, afin que dans la classe Action ci-dessus, je puisse savoir de quel lien vien l'appel, et agir en fonction.
    Ca me permettrai de ne pas avoir à créer une action de plus.

    A moins que ce ne soit pas conseillé...

    merci d'avance !

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    746
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 746
    Points : 316
    Points
    316
    Par défaut
    toujours personne?

    Je voudrais juste savoir lorsque j'arrive dans l'Action, quelle est le lien qui a lancé l'Action en question...

    merci d'avance

  3. #3
    Membre éprouvé
    Avatar de yolepro
    Profil pro
    Architecte de système d'information
    Inscrit en
    Mai 2002
    Messages
    918
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Mai 2002
    Messages : 918
    Points : 1 144
    Points
    1 144
    Par défaut
    Tu n'as pas cherché très longtemps je pense ?

    Regardes la doc Struts http://struts.apache.org/struts-doc-1.2.7/userGuide/struts-html.html#link

    Tu as un attribut qui se nomme paramId + paramProperty
    Il te rajoute un paramatre dans ton url...

    Ca te l'encode en J2EE normé. Mais plus simple tu le rajoutes a la main :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    |<html:link action="choixAgent?monparam=jeViensdici">Gestion arrêts</html:link>
    Etre c'est etre relatif.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    746
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 746
    Points : 316
    Points
    316
    Par défaut
    Bonjour,

    merci pour ta réponse, j'avais effectivement trouvé ca entre temps.

    Par contre j'ai un nouveau problème lié à ce passage de paramètre :

    Comme on peut le voir le lien lance une action struts, donc quand on arrive dans l'Action la première fois, on va le dernier "else", et on est forwardé vers un formulaire.

    Une fois que ce formulaire et validé, on reviens dans l'action, et par contre à ce moment là je n'ai plus la valeur du paramètre du lien, je pense que c'est normal car il devait être en request et il a du expiré.

    Il faudrait donc au premier passage dans l'Action, le sauvegarder quelque part, mais je ne sais pas comment car je crois comprendre que le bean de formulaire et l'Action sont instanciés à chaque submit ou appel de l'Action non?

  5. #5
    Membre éprouvé
    Avatar de yolepro
    Profil pro
    Architecte de système d'information
    Inscrit en
    Mai 2002
    Messages
    918
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Mai 2002
    Messages : 918
    Points : 1 144
    Points
    1 144
    Par défaut
    Re,

    Le plus simple : tu le remets en request (ex : request.setAttribute("tonparam", tonparam)).

    Maintenant comprends bien qu'en cliquant sur ton link tu ne soumets pas ton formulaire... pour cela il faudrait un bouton submit ou alors faire appelle à du javascript.

    Et donc qui dit ne pas soumettre ton formulaire, dit que les modifs apportées lors de l'affichage de la JSP ne sont pas soumise non plus.
    Etre c'est etre relatif.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    746
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 746
    Points : 316
    Points
    316
    Par défaut
    J'ai pas pensé à le remmettre en request, tu as raison, entre temps j'ai déclaré un String statique qui récupère le param au premier passage, et au second passage je le lis, ca fonctionne mais je ne sais pas si c'est très propre.

    merci pour ton aide en tout cas !

Discussions similaires

  1. Réponses: 6
    Dernier message: 20/12/2013, 11h35
  2. [XL-2010] Comment savoir de quel endroit on lance une macro ?
    Par jcderchain dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 06/10/2011, 12h06
  3. Réponses: 2
    Dernier message: 30/07/2004, 15h09
  4. Savoir quel OS est installer sur une machine
    Par batmat86 dans le forum C++Builder
    Réponses: 4
    Dernier message: 15/06/2004, 16h16
  5. [Struts] balise <html:link>
    Par PeteMitchell dans le forum Struts 1
    Réponses: 7
    Dernier message: 26/04/2004, 21h35

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