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-Layout] Créer un <bean:define> dans un <layout:collection>


Sujet :

Struts 1 Java

  1. #1
    Membre éclairé
    Inscrit en
    Mai 2005
    Messages
    364
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 364
    Par défaut [Struts-Layout] Créer un <bean:define> dans un <layout:collection>
    Bonjour,

    J'essai de créer un <bean:define> à l'intérieur d'un <layout:collection>, afin de réutiliser la valeur du bean:define dans un lien...

    Voici le mini code en question:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <layout:collection name="propositionForm" property="l_video" offsetIndexId="index" emptyKey="msg.notFound" styleClass="error">
    	<layout:collectionItem title="label.none" styleClass="">
    			<layout:textarea  cols="50" property="l_video[${index}].code" mode="R,R,R"  isRequired="false" key="label.code" maxlength="255"/>	
    			<layout:text property="l_video[${index}].id" mode="R,R,R" isRequired="false" key="label.Heure" styleId="id" maxlength="5" size="5" layout="false" mode="H,H,H"/>
    Ainsi écrit, tout fonctionne très bien.
    Mais quand je rajoute le bean define , cela ne va plus:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <bean:define id="idVideo" value="l_video[${index}].id" />
    En fait, il apparait qu'il m'est impossible de créer mon bean dans mon layout:collection. L'erreur est la suivante:

    avax.servlet.ServletException: Define tag can contain only one of name attribute, value attribute, or body content
    Comment faire donc pour récupérer la valeur de mon id, afin de la mettre ensuite dans mon lien ??

    je vous remercie d'avance !

  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
    Ajoute l'attribut id dans le tag layout:collection comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <layout:collection name="propositionForm" property="l_video" id="video" indexId="index" emptyKey="msg.notFound" styleClass="error">
    et ensuite, pour passer l'id en paramètre de l'Action dans un lien, il suffit de coder ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <layout:collectionItem title="">
       <layout:link action="pathAction.do?id=${video.id}">${video.id}</html:link>
    </layout:collectionItem>

  3. #3
    Membre éclairé
    Inscrit en
    Mai 2005
    Messages
    364
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 364
    Par défaut
    merci de ton aide c_nvy.

    J'ai essayé, mais cela ne fonctionne pas.
    En fait, le "${video.id}" n'est pas traduit... Il apparait tel quel dans le code

    Le code (avec ta réponse) est donc maintenant le suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     
    <layout:collection name="propositionForm" property="l_video" id="video" offsetIndexId="index" emptyKey="msg.notFound" styleClass="error">
    	<layout:panel styleClass="tableDetail">
    		<layout:collectionItem title="label.none" styleClass="">
    			<layout:textarea  cols="50" property="l_video[${index}].code" mode="R,R,R"  isRequired="false" key="label.code" maxlength="255"/>		
    			<layout:text property="l_video[${index}].id" mode="R,R,R" isRequired="false" key="label.Heure" styleId="id" maxlength="5" size="5" layout="false" mode="H,H,H"/>
    		   <layout:link action="visu.do?reqCode=vueCodeVideo&id=${video.id}">${video.id}</layout:link>
    		 </layout:collectionItem>
    		 </layout:panel>
    	</layout:collection>
    merci

  4. #4
    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
    L'EL ${video.id} passée en paramètre de l'attribut action du tag layout:link doit être interprétée.

    Si l'autre n'est pas interprétée, c'est que tu n'es pas en J2EE 1.4 (Servlet 2.4/JSP 2.0).

    Dans ce cas, il suffit de la remplacer par un tag layout:write :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <layout:collection name="propositionForm" property="l_video" id="video" offsetIndexId="index" emptyKey="msg.notFound" styleClass="error">
    	<layout:panel styleClass="tableDetail">
    		<layout:collectionItem title="label.none" styleClass="">
    			<layout:textarea  cols="50" property="l_video[${index}].code" mode="R,R,R"  isRequired="false" key="label.code" maxlength="255"/>		
    			<layout:text property="l_video[${index}].id" mode="R,R,R" isRequired="false" key="label.Heure" styleId="id" maxlength="5" size="5" layout="false" mode="H,H,H"/>
     		        <layout:link action="visu.do?reqCode=vueCodeVideo&id=${video.id}">
     		           <layout:write name="video" property="id"/>	
    		        </layout:link>
    		 </layout:collectionItem>
    	 </layout:panel>
    </layout:collection>

  5. #5
    Membre éclairé
    Inscrit en
    Mai 2005
    Messages
    364
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 364
    Par défaut
    Dans Eclipse, j'ai configuré JDK 1.4... mais effectivement, en mettant le bean:write, il m'affiche correctement l'id...

    Sauf que à la limite, ce n'est pas ça le plus important, mais bien le paramètre dans le lien, qui lui.... n'est pas traduit (cela me donne donc le lien suivant: ..../visu.do?reqCode=vueCodeVideo&id=${video.id}

    Par contre, tu parles d'EL... or, je n'ai pas dans ce projet de lib Struts EL, mais seulement STRUTS normal.... Cela vient -il de là ?

  6. #6
    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 est étrange que l'EL ${video.id} dans le tag <layout:link action="visu.do?reqCode=vueCodeVideo&id=${video.id}"> ne soit pas interprétée alors que ${index} dans le tag <layout:text> l'est.

    Je ne parle pas de la version du JDK mais de la version de J2EE.
    Pour savoir en quelle version de J2EE tu es, peux-tu montrer le début de ton web.xml ?
    Et peux-tu aussi préciser quel serveur d'application tu utilises et sa version ?

  7. #7
    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
    Sinon, voici une autre solution sans EL dans le tag layout:link :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <layout:collection name="propositionForm" property="l_video" id="video" offsetIndexId="index" emptyKey="msg.notFound" styleClass="error">
    	<layout:panel styleClass="tableDetail">
    		<layout:collectionItem title="label.none" styleClass="">
    			<layout:textarea  cols="50" property="l_video[${index}].code" mode="R,R,R"  isRequired="false" key="label.code" maxlength="255"/>		
    			<layout:text property="l_video[${index}].id" mode="R,R,R" isRequired="false" key="label.Heure" styleId="id" maxlength="5" size="5" layout="false" mode="H,H,H"/>
     		        <layout:link action="visu.do?reqCode=vueCodeVideo" paramId="id" paramName="video" paramProperty="id">
     		           <layout:write name="video" property="id"/>	
    		        </layout:link>
    		 </layout:collectionItem>
    	 </layout:panel>
    </layout:collection>

  8. #8
    Membre éclairé
    Inscrit en
    Mai 2005
    Messages
    364
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 364
    Par défaut
    concernant l'entête du web.xml:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     
    <?xml version="1.0" encoding="UTF-8"?>
     
    <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
                             "http://java.sun.com/dtd/web-app_2_3.dtd">
     
    <web-app>
     .....
    Je ne sais pas si cela suffit
    Le serveur d'application est un tomcat 4.1.37.

    J'ai essayé ta dernière méthode, cela fonctionne, c'est nickel. Je m'en souviendrais dans l'avenir !

    merci beaucoup

    Je passe le sujet en résolu, mais je reste pour voir ta réponse sur le problème de l'EL qui ne fonctionne pas sur le <layout:link>

  9. #9
    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
    Tu es donc en J2EE 1.3 et je ne pense pas que la version 4.1.37 de Tomcat supporte J2EE 1.4.

    Tu dois donc obligatoirement utiliser la solution sans EL dans le tag layout:link.

  10. #10
    Membre éclairé
    Inscrit en
    Mai 2005
    Messages
    364
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 364
    Par défaut
    tout s'explique alors
    Merci beaucoup .

  11. #11
    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
    De rien.

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 18/10/2011, 15h39
  2. Réponses: 4
    Dernier message: 15/02/2006, 17h24
  3. [Struts] paramètre JS dans un bean:define
    Par Mrlud dans le forum Struts 1
    Réponses: 4
    Dernier message: 09/06/2005, 14h38
  4. Réponses: 4
    Dernier message: 19/04/2005, 13h42
  5. [Struts]pb de Bean define
    Par tscoops dans le forum Struts 1
    Réponses: 8
    Dernier message: 02/03/2005, 09h12

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