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] html:link et passage de paramètres


Sujet :

Struts 1 Java

  1. #1
    Membre habitué Avatar de nikalkal
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    231
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2004
    Messages : 231
    Points : 166
    Points
    166
    Par défaut [Struts] html:link et passage de paramètres
    Bonjour,
    mon titre est assez clair non?

    Je désire tout simplement passer un paramètre (java) à un lien <html:link>
    Je pensais faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <html:link page="/formulaireModificationVoiture.do?prop='<%=idVoitureCourante%>'"><img src=""></img></html:link>
    mais dans ce cas c'est la chaine "<%=idVoitureCourante%>" qui est passé en paramètre et non la valeur de idVoitureCourante.

    Comment puis-je faire???

  2. #2
    Membre expérimenté
    Avatar de zekey
    Profil pro
    Inscrit en
    Février 2005
    Messages
    1 036
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 1 036
    Points : 1 403
    Points
    1 403
    Par défaut
    Cela dépend de la version de jsp que tu utilises (C'est döpendant de ce que tu as declaré dans le web.xml) tu peux utliser les el.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <html:link page="/formulaireModificationVoiture.do?prop=${idVoitureCourante}"><img src=""></img></html:link>

  3. #3
    Membre habitué Avatar de nikalkal
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    231
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2004
    Messages : 231
    Points : 166
    Points
    166
    Par défaut
    Je comprends pas bien :
    Ou faut-il déclarer ${idVoitureCourante} et est-ce que je peux l'affecter dans une jsp avant de l'utiliser?

  4. #4
    Membre expérimenté
    Avatar de zekey
    Profil pro
    Inscrit en
    Février 2005
    Messages
    1 036
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 1 036
    Points : 1 403
    Points
    1 403
    Par défaut
    En fait si tu es en jsp 2.0 (a verifier pour cela montre nous la deuxieme ligne de ton web.xml) tu peux accéder à un bean en faisant ${monbean} c'est equivalent à <%=monbean%> mais c'est supporté par les tags.

    Dans le cas contraire tu peux utiliser les tag el : <html-el:link /> dans ceux la tu peux egalement utiliser cette syntaxe. Pour plus d'infos aller voir chez jakarta

  5. #5
    Membre habitué Avatar de nikalkal
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    231
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2004
    Messages : 231
    Points : 166
    Points
    166
    Par défaut
    Ok voici ma doctype :
    <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">

    Mais pour etre plus large, voici ce que je désire faire:
    J'ai une liste de voiture que je vais chercher en base grâce à hibernate et que j'affiche dans ma page JSP sous forme de tableau.

    Devant chaque élément affiché, je veux mettre une image (modification) avec un lien qui me permet d'afficher un formulaire afin de modifier les paramètres de la voiture séléctionnée.

    Le problème est lorsque je vais sur la page de formulaire, il faut que je récupère la voiture à modifier.
    Je pensais donc passer son id pour la récupérer en base apres.

    Voici mon code :
    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
     
    	<h1>Modification de voitures</h1>
    	<h3>Voi&ccedil;i la liste des voitures existantes, cliquez sur l'icône pr&eacute;c&eacute;dant la voiture pour la modifier. </h1>
     
    	<div id="identification">
    		<table>
     
    		<tr>
    			<td width="30"></td>
    			<td width="200"><b>Nom</b></td>
    			<td width="200"><b>Modele</b></td>
    			<td width="200"><b>Ann&eacute;e</b></td>
    			<td width="200"><b>Kilom&eacute;trage</b></td>
    		</tr>
     
    	<%  int idVoitureCourante;
    		List result = mgrVoiture.getListeVoitures();
    		for(int i=0 ;i<result.size(); i++) {
    			theVoiture = (Voiture) result.get(i) ;
    	%>
    			<% idVoitureCourante = theVoiture.getId(); %>
    			<tr>
    			<td width="30"><html:link page="/formulaireModificationVoiture.do?prop='<%=idVoitureCourante%>'"><img src=""></img></html:link></td>
    				<td>
    					<br /><%=theVoiture.getNom()%> <br />
    				</td>
    				<td>
    					<br /><%=theVoiture.getModele()%> <br />
    				</td>
    				<td>
    					<br /><%=theVoiture.getAnnee()%> <br />
    				</td>
    				<td>
    					<br /><%=theVoiture.getKilometrage()%> <br />
    				</td>		
    			</tr>
    		<%	} %>
    	</table></div>
    Maintenant il est fort probable qu'une méthode plus "standardisée" existe et que je me complique la vie pour rien alors merci de me donner vos avis quant à mon approche face à ce problème et quelles sont les solutions plus facilement implémentable...

  6. #6
    Membre expérimenté
    Avatar de zekey
    Profil pro
    Inscrit en
    Février 2005
    Messages
    1 036
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 1 036
    Points : 1 403
    Points
    1 403
    Par défaut
    Ce n'est pas une mauvaise solution regarde la doc du tag link
    http://struts.apache.org//struts-doc...html.html#link et tout particulierement les attributs paramName, paramId et paramProperty. Cela marche avec les anciennes version de struts aussi, sinon avec une nouvelle ce que j'ai indiqué avant devrait marcher.


    La seule remarque je que puisse faire c'est que tu as bcp d'intelligence dans ta jsp ce qui n'est pas très MVC.

  7. #7
    Membre habitué Avatar de nikalkal
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    231
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2004
    Messages : 231
    Points : 166
    Points
    166
    Par défaut
    Merci je vais voir tout ca.

    Ps: c'est ma 1ère appli J2EE donc il est certain que le code ne soit pas tres optimisé. Par contre je suis ouvert à toutes sugestion d'amélioration pour le respect du modèle MVC...

    Ps2: je ne met pas ce post en résolu pour l'instant... à suivre.

  8. #8
    Membre habitué Avatar de nikalkal
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    231
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2004
    Messages : 231
    Points : 166
    Points
    166
    Par défaut
    Ok, donc j'ai réussit & voila ma solution : déclarer un bean, setter une propriété et la passer en paramètre à html:link...

    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
     
    	<h1>Modification de voitures</h1>
    	<h3>Voi&ccedil;i la liste des voitures existantes, cliquez sur l'icône pr&eacute;c&eacute;dant la voiture pour la modifier. </h1>
     
    	<div id="identification">
    		<table>
     
    		<tr>
    			<td width="30"></td>
    			<td width="200"><b>Nom</b></td>
    			<td width="200"><b>Modele</b></td>
    			<td width="200"><b>Ann&eacute;e</b></td>
    			<td width="200"><b>Kilom&eacute;trage</b></td>
    		</tr>
     
    	<%  
    		int idTemp;
    		List result = mgrVoiture.getListeVoitures();
    		for(int i=0 ;i<result.size(); i++) {
    			theVoiture = (Voiture) result.get(i) ;
    			idTemp = theVoiture.getId();
    	%>
    			<jsp:useBean id="monBean" scope="page" class="fr.gestentrep.voitures.Voiture" />
    			<jsp:setProperty name="monBean" property="id" value="<%=idTemp%>" />
     
    			<tr>
    			<td width="30"><html:link page="/formulaireModificationVoiture.do" paramName="monBean" paramId="test" paramProperty="id" ><img src=""></img></html:link></td>
    				<td>
    					<br /><%=theVoiture.getNom()%> <br />
    				</td>
    				<td>
    					<br /><%=theVoiture.getModele()%> <br />
    				</td>
    				<td>
    					<br /><%=theVoiture.getAnnee()%> <br />
    				</td>
    				<td>
    					<br /><%=theVoiture.getKilometrage()%> <br />
    				</td>
    			</tr>
    		<%	} %>
    	</table></div>
    Gracias zekey pour ton aide @+

  9. #9
    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
    Comme l'a dit ze_key, tu pourrais faire quelque chose de beaucoup plus propre du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <logic:iterate name="listeVoitures" id="voiture">
     <tr>
       <td><html:link page="/formulaireModificationVoiture.do" paramName="voiture" paramId="test" paramProperty="id"><img src=""></img></html:link></td>
       <td><html:text name="voiture" property="nom"/> </td>
       <td><html:text name="voiture" property="modele"/></td>
       <td><html:text name="voiture" property="annee"/></td>
       <td><html:text name="voiture" property="kilometrage"/></td>
     </tr>
    </logic:iterate>
    Pour que ça fonctionne, il faut ajouter la directive taglib suivante au début de ta jsp :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>
    et donc tu dois mettre la tld struts-logic.tld sous WEB-INF.

    Il faut également que la List listeVoitures soit mise dans le scope dans l'Action qui lit la base de données.

    A tester mais ça devrait marcher.

  10. #10
    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
    Une autre solution, avec la JSTL et les EL
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <c:forEach items="${listeVoitures}" var="voiture">
      <tr>
       <td><html-el:link page="/formulaireModificationVoiture.do?test=${voiture.id}"><img src=""></img></html-el:link></td> 
       <td><c:out value="${voiture.nom}"/></td>
       <td><c:out value="${voiture.modele}"/></td>
       <td><c:out value="${voiture.annee}"/></td>
       <td><c:out value="${voiture.kilometrage}"/></td>
      </tr>
    </c:forEach>
    Il faut ajouter les directives taglib suivantes au début de ta jsp :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    <%@ taglib uri="/WEB-INF/c.tld" prefix="c" %>
    <%@ taglib uri="/WEB-INF/struts-html-el.tld" prefix="html-el" %>
    et bien sûr copier c.tld et struts-html-el.tld sous WEB-INF, car apparemment, tu n'es pas en JSP 2.0.

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

Discussions similaires

  1. tag html link et passage de paramètre à url.
    Par david06600 dans le forum Struts 1
    Réponses: 1
    Dernier message: 22/08/2006, 14h22
  2. [Struts] Html:link avec plusieurs paramètres
    Par mariemor64 dans le forum Struts 1
    Réponses: 2
    Dernier message: 24/05/2006, 14h27
  3. [struts][html:link] récuperer la valeur d'un attribut
    Par jamal_b dans le forum Struts 1
    Réponses: 5
    Dernier message: 07/04/2006, 18h38
  4. [struts][html:link] comment rajouter un attribut id ?
    Par Gromitou dans le forum Struts 1
    Réponses: 8
    Dernier message: 04/04/2006, 18h14
  5. Réponses: 10
    Dernier message: 27/08/2004, 11h55

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