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]Envoi de parametre avec un lien hmtl:link


Sujet :

Struts 1 Java

  1. #1
    Futur Membre du Club
    Inscrit en
    Février 2004
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 38
    Points : 9
    Points
    9
    Par défaut [STRUTS]Envoi de parametre avec un lien hmtl:link
    Bonjour,

    Je fais une application avec des struts. J'ai une page1 qui porte un lien vers une autre page2. Je voudrais envoyer au moment du clic sur le lien, un parametre dont la valeur est stockee dans une propriete(activiteID) du bean(activiteForm) de la page1.

    J ai parcouru la FAQ sur les liens avec struts, j ai teste les astuces, mais ca ne marche pas!

    voila le code de mon lien de ma page1:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <html:link href="setUpActiviteFiche" paramId="activiteID" paramName="activiteForm"><bean:write name="activite" property="reference"/></html:link>
    setUpActiviteFiche est l'action qui va generer ma page2. Pour cela, elle devra recuperer la valeur du parametre envoye (activiteID) et faire une recherche dans la base de donnees avant d afficher la page 2. voila donc le code de mon setUp que j ai essaye pour voir si le parametre etait bien recu :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    public ActionForward execute(ActionMapping mapping,
                                     ActionForm form,
                                     HttpServletRequest request,
                                     HttpServletResponse response)
            throws Exception {
            ActiviteForm activiteForm = (ActiviteForm) form;
     
            System.out.println(activiteForm.getActiviteID()+"\n");
                ....
    et voila l affichage:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    agile.form.ActiviteForm@1f39e73
    en clair, c pas du tout la valeur que j esperais!!

    est ce que quelqu'un pourrait aurait une idee s il vous plait?
    merci

  2. #2
    Membre régulier
    Avatar de Jaxofun
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    108
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 108
    Points : 84
    Points
    84
    Par défaut
    Essaye de recupérer tes attributs comme ceci :



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    import org.apache.commons.beanutils.PropertyUtils;
     
    (...)
     
    public ActionForward execute(ActionMapping mapping, 
                                     ActionForm form, 
                                     HttpServletRequest request, 
                                     HttpServletResponse response) 
            throws Exception { 
     
        String monActivite = (String) PropertyUtils.getSimpleProperty(form,"activiteID");
        System.out.println(monActivite+"\n");

  3. #3
    Futur Membre du Club
    Inscrit en
    Février 2004
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 38
    Points : 9
    Points
    9
    Par défaut
    ca me renvoie exactement la meme valeur qu avec mon
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.out.println(activiteForm.getActiviteID()+"\n");

    est ce que la syntaxe d utilisation du html:link est bon deja?

  4. #4
    Futur Membre du Club
    Inscrit en
    Février 2004
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 38
    Points : 9
    Points
    9
    Par défaut
    Pour etre plus precis, voila exactement ce que je fais.

    Sur ma page 1, j affiche une liste d'activites avec un ensemble de leurs proprietes, liste obtenue par requete sur ma base de donnees.
    J ai donc cree cette liste grace a mon form et a un logic:iterate collection bien place dans ma jsp.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <logic:iterate collection="<%=session.getAttribute("activites")%>" id="activite"> 
        <tr>
     
        	<td><html:link href="setUpActiviteFiche" paramId="activiteID" paramName="activiteForm"><bean:write name="activite" property="activiteID"/></html:link></td>
        	<td><bean:write name="activite" property="description"/></td>
    Chaque identifiant d activite represente un lien vers une fiche complete de l activite. La fiche complete est construite par le biais de mon action setUpActiviteFiche qui, une fois son traitement fini, fera un forward vers ma page2 grace a mon struts-config.xml.

    Mon probleme est donc de
    - creer mes liens sur ma page1
    - et de recuperer l'identifiant de l activite dont on veut ouvrir la fiche complete.

    Toute idee est la bienvenue

  5. #5
    Membre régulier
    Avatar de Jaxofun
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    108
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 108
    Points : 84
    Points
    84
    Par défaut
    Effectivement, l'erreur doit venir de là !

    Le problème c'est que j'ai jamais utilisé html:link, mais apparement tu peux y déclaré des attributs à envoyer.
    Cependant, je ne pense pas que cela puisse envoyer des valeurs pour completer le from bean associé à l'action.

    D'ailleurs à tu vraiment besoin d'utiliser un fromBean ? Tu peux faire un html:link dans ta jsp en specifiant l'attribut, puis un getattribut pour le recuperer dans ton action et le tout sans utiliser ton form.

  6. #6
    Futur Membre du Club
    Inscrit en
    Février 2004
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 38
    Points : 9
    Points
    9
    Par défaut
    excuse moi , je n ai pas tres bien compris ce que tu as voulu dire. Il me semble que la solution que tu me donnes est justement celle que j essaye de mettre en oeuvre : envoyer depuis ma jsp un attribut à mon action via un html:link

    mon action s occupera de recuperer toutes les informations sur la base de donnees concernant l activite choisie et les affichera dans la page2

    Si tu pouvais m eclairer un peu plus sur ton idee, car je crois q on s est pas compris, merci !

  7. #7
    Membre régulier
    Avatar de Jaxofun
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    108
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 108
    Points : 84
    Points
    84
    Par défaut
    Et bien, dans ta version tu essayes de transmettre ton attribut de ta jsp à ton action par le biais d'un form Bean.

    Or, je ne pense pas qu'avec la balise "html:link" on peut remplir un formBean.

    Cependant tu peux transmettre un attribut d'une jsp à ton action sans utiliser de form Bean, en utilisant simplement des attributs de requete, c'est apparement comme cela que doit fonctionner "html:link" (d'apres ce que j'ai lu).

    Je n'ai pas testé, mais essaye un truc du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <html:link page="setUpActiviteFiche" paramId="activiteID" paramName="activiteForm"><bean:write name="activite" property="reference"/></html:link>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    public ActionForward execute(ActionMapping mapping, 
                                     ActionForm form, 
                                     HttpServletRequest request, 
                                     HttpServletResponse response) 
            throws Exception { 
     
        String monActivite = (String) request.getAttribut("activiteID"); 
        System.out.println(monActivite+"\n");

  8. #8
    Futur Membre du Club
    Inscrit en
    Février 2004
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 38
    Points : 9
    Points
    9
    Par défaut
    ok, je vois ce que tu as voulu dire. Mais le probleme, c est que je suis obligee de passer d abord par mon form avant de passer par mon action.

    J ai aussi essaye le request.getAttribute(), mais ca ne marche pas...

    une autre idee?

  9. #9
    Membre régulier
    Avatar de Jaxofun
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    108
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 108
    Points : 84
    Points
    84
    Par défaut
    Citation Envoyé par hinanui
    je suis obligee de passer d abord par mon form avant de passer par mon action.
    Pourquoi donc ? Une action n'a pas forcement besoin de contenir un form !

    J ai aussi essaye le request.getAttribute(), mais ca ne marche pas...
    Qu'est ce que tu obtient ? la meme chose qu'au dessus ? null ? une erreur ?

    Au fait, où initialises-tu la valeur de activiteID ?

  10. #10
    Futur Membre du Club
    Inscrit en
    Février 2004
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 38
    Points : 9
    Points
    9
    Par défaut
    J ai aussi essaye le request.getAttribute(), mais ca ne marche pas...
    Qu'est ce que tu obtient ? la meme chose qu'au dessus ? null ? une erreur ?
    J obtiens null
    Au fait, où initialises-tu la valeur de activiteID ?
    ma page1 est initialisee par une action qui recupere dans la base de donnees la liste des actions et qui stocke cette liste ds une variable de session. c est a partir de la que se construit ma page jsp avec le logic:iterate collection="activites"

    je mets tres succinctement quelques bouts de codes q m ont permis de faire ca:

    activiteList.jsp:
    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
    <html:form action="termineActivite">
    <table>
      <tr>
        <th><div align="center">R&eacute;f&eacute;rence</div></th>
        <th><div align="center">Description</div></th>
        <th><div align="center">Lot d'int&eacute;g.</div></th>
        <th><div align="center">Type</div></th>
        <th><div align="center"><html:submit><bean:message key="button.terminer"/></html:submit></div></th>
      </tr>
     	<logic:iterate collection="<%=session.getAttribute("activites")%>" id="activite"> 
        <tr>
        	<td><html:link href="setUpActiviteFiche" paramName="activiteForm" paramId="activiteID"><bean:write name="activite" property="activiteID"/></html:link></td>
        	<td><bean:write name="activite" property="description"/></td>
        	<td><bean:write name="activite" property="lotIntegration"/></td>
        	<td><bean:write name="activite" property="type"/></td>
        	<td><html:multibox name="activiteForm" property="supprimer">
    				<bean:write name="activite" property="activiteID" />
    			 </html:multibox>
    		</td>
        </tr>
        </logic:iterate>	
     
    </table>
    </html:form>
    l action qui permet de generer la jsp (page1):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ActiviteService activiteSrv = new ActiviteService();
    Collection activites;
               activites = activiteSrv.getActivites();
               session.setAttribute( "activites", activites );
    l'action qui permet de generer la fiche(page2):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     String monActivite = (String) request.getAttribute("activiteID"); 
            System.out.println("setupficheaction: "+monActivite+"\n");
    voila, c les bouts essentiels... mon bean ActiviteForm contient tous les parametres avec les getters et setters necessaires a la jsp

    Pour finir, je suis toujours aussi bloque.... :-(

  11. #11
    Nouveau membre du Club
    Inscrit en
    Juillet 2005
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 31
    Points : 29
    Points
    29
    Par défaut
    depuis le debut je vois que tu teste uniquement avec

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <html:link href="" ...>lien</html:link>
    Apparement vu que tu forward vers une action tu devrai mettre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <html:link action="/tonaction">lien</html:link>
    et pour fabriquer ton url tu peux mettre dans ton iterate:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <bean:define id="activiteID" name="activite" property="activityID" scope="page"/>
     
    <html:link action="/tonAction?id=${activiteID}">lien</html:link>
    Si les EL (le $) n'est pas supporte alors tu mets

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <html:link action="/tonAction?id=<%= pageContext.getAttribute("activiteID") %>">lien</html:link>
    voila, en esperant que ça marchera 8)[/code]

  12. #12
    Futur Membre du Club
    Inscrit en
    Février 2004
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 38
    Points : 9
    Points
    9
    Par défaut
    Apparement vu que tu forward vers une action tu devrai mettre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <html:link action="/tonaction">lien</html:link>
    j ai essaye, et j ai mis:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <bean:define id="activiteID" name="activite" property="activiteID" scope="page"/> 
       	<td><html:link action="/setUpActiviteFiche?id=${activiteID}">
    				<bean:write name="activite" property="activiteID"/>
    			</html:link></td>
    et du coup, ca me met cette erreur-ci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    org.apache.jasper.JasperException: /pages/activiteList.jsp(41,8) L'attribut action est incorrect pour le tag link d'après la TLD indiquée
    	org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:39)
    	org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:409)
    	....
    est ce que j'utilise une mauvaise version de struts ou quoi?[/code]

  13. #13
    Futur Membre du Club
    Inscrit en
    Février 2004
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 38
    Points : 9
    Points
    9
    Par défaut
    Apparement vu que tu forward vers une action tu devrai mettre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <html:link action="/tonaction">lien</html:link>
    j ai essaye, et j ai mis:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <bean:define id="activiteID" name="activite" property="activiteID" scope="page"/> 
       	<td><html:link action="/setUpActiviteFiche?id=${activiteID}">
    				<bean:write name="activite" property="activiteID"/>
    			</html:link></td>
    et du coup, ca me met cette erreur-ci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    org.apache.jasper.JasperException: /pages/activiteList.jsp(41,8) L'attribut action est incorrect pour le tag link d'après la TLD indiquée
    	org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:39)
    	org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:409)
    	....
    est ce que j'utilise une mauvaise version de struts ou quoi?[/code]

  14. #14
    Nouveau membre du Club
    Inscrit en
    Juillet 2005
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 31
    Points : 29
    Points
    29
    Par défaut


    c'est pas normal cette exception la, ça existe bel et bien l'attribut action pour <html:link> et je pense que ça viennent d'une mauvaise version de struts...dans ces cas la une seule solution me vient a l'esprit, tout verifier, recompiler, relancer le serveur tomcat

  15. #15
    Expert éminent

    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
    Points : 7 778
    Points
    7 778
    Par défaut
    Salut !

    ${activiteID} est un tag JSTL.

    Pour pouvoir l'utiliser, il faut que tu copies la TLD c.tld sous WEB-INF et que tu codes dans ta jsp :

    <%@ taglib uri="/WEB-INF/c.tld" prefix="c" %>

    Sinon, il me semble qu'on peut coder :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <html:link action="setUpActiviteFiche?id=${activiteID}"> 
    ou
    <html:link page="/setUpActiviteFiche.do?id=${activiteID}">

  16. #16
    Membre régulier
    Avatar de Jaxofun
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    108
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 108
    Points : 84
    Points
    84
    Par défaut
    Essayes en ajoutant ".do" à l'action :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <bean:define id="activiteID" name="activite" property="activiteID" scope="page"/> 
          <td><html:link action="/setUpActiviteFiche.do?id=${activiteID}"> 
                <bean:write name="activite" property="activiteID"/> 
             </html:link></td>

  17. #17
    Futur Membre du Club
    Inscrit en
    Février 2004
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 38
    Points : 9
    Points
    9
    Par défaut
    Bon, j ai tt recompile, redemarre tomcat, reessaye une nouvelle fois.... et ca marche tjs pas! :-(

    avant que je tue quelques pigeons pour commencer un rituel vodoo et faire la danse du chacal autour de mon pc, est ce que quelqu'un aurait une derniere idee a me proposer (histoire de ne pas paraitre c.. pour rien devant mes autres collegues de bureau...)?

    merci infiniment pour les idees de la derniere chance....

  18. #18
    Nouveau membre du Club
    Inscrit en
    Juillet 2005
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 31
    Points : 29
    Points
    29
    Par défaut
    je pense pas que c'est lien au fait qu'il faut mettre le .do jaxofun, en fait struts accepte d'autres extensions, ce qu'il n'accepte pas c'est les chaine de mapping, il faut absolument mettre quelque chose de la forme .* (ou * est html, cul , ou autre chose) ou alors /*/* (ou * est un seul mot) mais t'es vraiment pas obligé de mettre "do" comme chaine

    et perso je le deconseille, imagine que tu change le struts config (le fameux url-mapping) alors tu dois changer l'extension partout et ça c'est moche

  19. #19
    Nouveau membre du Club
    Inscrit en
    Juillet 2005
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 31
    Points : 29
    Points
    29
    Par défaut
    t'utilise quoi comme environnement de developpement ?

  20. #20
    Expert éminent

    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
    Points : 7 778
    Points
    7 778
    Par défaut
    Hinanui, as-tu vu mon message concernant les tags JSTL (le dernier de la page 1) ?

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 1
    Dernier message: 30/06/2015, 10h55
  2. [HTML] Envoi dun formulaire avec un lien au lieu d'un bouton
    Par Mysticlolly dans le forum Balisage (X)HTML et validation W3C
    Réponses: 8
    Dernier message: 19/05/2010, 12h30
  3. Envoi de paramètre avec un lien href
    Par lanfeust42 dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 24/04/2009, 13h51
  4. envoi de parametre avec fonction
    Par mathrix77 dans le forum VBScript
    Réponses: 2
    Dernier message: 05/04/2008, 22h17
  5. [AJAX] Envoie de parametre avec asp
    Par rifidamiens dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 26/03/2008, 17h06

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