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

Taglibs Java Discussion :

Récuperer la valeur d'un attribut [Custom Tags]


Sujet :

Taglibs Java

  1. #1
    Membre averti
    Inscrit en
    Février 2007
    Messages
    18
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Février 2007
    Messages : 18
    Par défaut Récuperer la valeur d'un attribut
    Bonjouts tout le monde,

    Je suis entraint de dévelepper ma propre tagLib, et je veux récuperer la valeur d'un attribut dans bean dont je ne connait que le nom du bean son scope et la nom de l'attribut.

    un exemple simple:
    <tag:maTag name="bean" property="attribut" scope="session">
    cette tag doit afficher la valeur de l'attribut 'attribut' du bean 'bean' qui se trouve dans la session

    Merci

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 26
    Par défaut
    C'est à dire que tu veux donner à property une valeur que tu as mis en attribut dans la session ?

    Pour faire ça c'est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <tag:montag property="<%=(String)session.getAttribute("attribut") %>"
    Mais je suis d'avoir bien compris ce que tu voulais !

  3. #3
    Membre averti
    Inscrit en
    Février 2007
    Messages
    18
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Février 2007
    Messages : 18
    Par défaut
    Merci pour votre réponse, mais c'est pas ce que je veux, je vous donne un exemple plus concret:

    regerde ce code :

    <logic:iterate id="personne" name="personnes">
    <bean:write name="personne" property="nom" /><br />
    </logic:iterate>

    à la tag write on donne un objet bean 'personne' et l'attribut 'nom' est dans la class associé à la tag il est capable de récuperer la valeur de l'attribut nom du bean personne, ce que je veux moi c'est comment il font ca dans la class.

    Merci

  4. #4
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,



    Pour récupérer le bean ils doivent utiliser pageContext.findAttribute() ou pageContext.getAttribute().

    Et pour récupérer les propriétés il faut utiliser la réflection ou des API comme Jakarta Commons BeanUtils...




    Maintenant si tu utilises les JSP 2.0 tu peux utiliser les EL pour cela, et remplacer ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <tag:maTag name="bean" property="attribut" scope="session">
    Par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <tag:maTag value="${sessionScope['bean'].attribut}"/>
    Ou directement ceci (qui recherchera dans tous les scopes par ordre croissant page->request->session->application) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <tag:maTag value="${bean.attribut}"/>
    Pour cela il faut que l'attribut de ton paramètre "value" du tag soit en rtexprvalue="true" et lui spécifier un type avec type="package.tonObjetAttendu"

    a++

  5. #5
    Membre averti
    Inscrit en
    Février 2007
    Messages
    18
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Février 2007
    Messages : 18
    Par défaut Merci
    Je vous en remerice infiniment gerboise_e et adiGuba, c'est ce que je veux, mon probleme est maintenant résolu

    Merci, Merci

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 21
    Par défaut
    Bonjour,


    Je me permet de remonter ce sujet, qui est assez vieux, mais qui me semble coller au mieux avec mon problème :

    Pour mon boulot, je suis en train de repasser sur le travail d'un ancien employé, qui a codé une application web en struts.

    Une partie de mon travail consiste en dépoussiérer le code.

    dans une partie de son code, il utilisait ce code :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <html:text property="phone" maxlength="20" size="20" value="<%= ((OmPerson)session.getAttribute("USER")).getPhone()%>" /><br>

    je voulais remplacer ceci par :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    <bean:define id="phone" name="USER" property="phone" />
    <html:text property="phone" maxlength="20" size="20" value="${phone}" /><br>

    à l'affichage, j'obtiens un champ de texte avec la valeur ${phone} dedans, et pas le numéro de téléphone.

    Je n'arrive pas à comprendre pourquoi cela ne fonctionne pas correctement, sachant que pour un autre projet, j'avais fait exactement le même code, et qu'il tournait.

    s'agit-il d'un problème de library, de lecture, ou je ne sais quoi.
    Si quelqu'un pouvait m'éclairer, ça m'arrangerait, merci.

    ps : en utilisant cette ligne

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <html:text name="USER" property="phone"  >
    , le numéro est bien indiqué, mais ça ne m'arrange pas pour la suite de l'application.

    ps 2 : désolé si je ne suis pas dans la bonne section, ou dans le bon message, si c'est le cas, et qu'un modérateur peut me replacer, ce serait super

  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
    Si l'EL ${phone} n'est pas interprétée, c'est que tu n'es pas en J2EE 1.4 ou plus.
    Pour savoir si tu peux passer en J2EE 1.4, il faudrait que tu précises quel serveur d'application tu utilises et surtout sa version.
    Si jamais tu as une version de serveur d'application qui ne peut pas tourner en J2EE 1.4, tu pourras toujours utiliser la tld struts-html-el.tld.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <html-el:text property="phone" maxlength="20" size="20" value="${phone}" />
    sans oublier d'ajouter au début de la jsp la directive taglib qui pointe sur cette tld.

    Tu n'as d'ailleurs pas besoin de coder un bean:define.
    Tu peux directement coder l'EL ${USER.phone}.

    Sinon, pour info, il existe une solution sans EL.
    En général, on initialise le champ texte dans l'Action qui s'exécute avant l'affichage du formulaire via le setter de l'ActionForm :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    TonActionForm tonActionForm = (TonActionForm) form ;
    tonActionForm.setPhone(((OmPerson)session.getAttribute("USER")).getPhone()) ;

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 21
    Par défaut
    Citation Envoyé par c_nvy Voir le message
    Si l'EL ${phone} n'est pas interprétée, c'est que tu n'es pas en J2EE 1.4 ou plus.
    Pour savoir si tu peux passer en J2EE 1.4, il faudrait que tu précises quel serveur d'application tu utilises et surtout sa version.
    J'utilise tomcat 5.0

    Si jamais tu as une version de serveur d'application qui ne peux pas tourner en J2EE 1.4, tu pourras toujours utiliser la tld struts-html-el.tld.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <html-el:text property="phone" maxlength="20" size="20" value="${phone}" />
    sans oublier d'ajouter au début de la jsp la directive taglib qui pointe sur cette tld.
    En fait, ça m'ennuierais d'utiliser cette tld car, je trouve, ça commence à perdre en clarté d'avoir plusieurs tld, et plusieurs balises : quand quelqu'un doit repasser derrière, il est plus facilement perdu.
    Ensuite, je ferais avec si j'ai aps le choix, merci de ton conseil
    Tu n'as d'ailleurs pas besoin de coder un bean:define.
    Tu peux directement coder l'EL ${USER.phone}.
    oui, en effet, c'est aussi bien, je ferais plutôt ça si possible.

    Sinon, pour info, il existe une solution sans EL.
    En général, on initialise le champ texte dans l'Action qui s'exécute avant l'affichage du formulaire via le setter de l'ActionForm :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    TonActionForm tonActionForm = (TonActionForm) form ;
    tonActionForm.setPhone(((OmPerson)session.getAttribute("USER")).getPhone()) ;
    En fait, j'aurais utilisé cette solution si on passait bien dans une action avant l'affichage du formulaire
    Le code est relativement vieux, et l'utilisation de struts devait être assez nouvelle, car bien que le fonctionnement global "à la struts" existe, il n'y a pas de <html:link ... > ou autre : seul les formulaires sont des actions. Vu le travail que ça demandait, je ne voulais pas "casser" le code existant, mais à la vue d'autres soucis, je vais m'y mettre, et ta solution proposée sera donc utilisable.

    Donc, maintenant : je cherche si tomcat 5.0 marche avec j2EE 1.4 ou supérieur : si c'est le cas, je passe à j2EE 1.4, sinon, j'essaie avec la tld struts-html-el.tld.

    Merci de ton aide.


    edit : après un peu de recherche, notamment sur ce guide
    Je me suis rendu compte qu'en ajoutant cette ligne, ça marchait mieux.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <%@ page isELIgnored="false" %>
    logique me dirait vous.
    Je pensais que c'était "activé" par défaut.
    Merci de ton aide c_nvy

  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
    Il faut au minimum la 5.5.27 de Tomcat pour pouvoir travailler en J2EE 1.4.
    Donc, si tu souhaites réellement utiliser une EL à la place de la scriptlet, soit tu changes de version de Tomcat (si toutefois c'est possible, car peut-être qu'elle t'est imposée), soit tu utilises la tld struts-html-el.tld.

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 21
    Par défaut
    ah bah, nos messages se sont croisés.
    Comme je disais dans mon édit, en effectuant <%@ page isELIgnored="false" %>
    j'arrive à faire fonctionner les el.

    Par contre, si ça ne devrait pas fonctionner, ça m'arrange pas.

    L'utilisation de tomcat5.0 est imposée.

    Je vais continuer les tests, pour essayer de voir pourquoi ça fonctionne, malgré tout, et si ça fonctionne vraiment.

    Merci de ton aide en tout cas

  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
    Je suis surprise que l'EL soit interprétée simplement après avoir codé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <%@ page isELIgnored="false" %>
    vu que tu n'es pas sensé pouvoir travailler en J2EE 1.4.
    Il y a quelque chose qui m'échappe.

    Peux-tu montrer le début de ton web.xml ?

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 21
    Par défaut
    pas de soucis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <!DOCTYPE web-app
      PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN"
      "http://java.sun.com/j2ee/dtds/web-app_2_2.dtd">
     
    <web-app>
    	<!-- xmlns="http://java.sun.com/xml/ns/j2ee"-->
    	<!--	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.4"-->
    	<!--	xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee   http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd http://java.sun.com/j2ee/dtds/web-app_2_2.dtd">-->
    ensuite il y a une partie propre à l'application, donc...

    et la partie taglib qui peut peut être t'intéresser aussi

    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
    43
    44
    45
    46
    47
    48
     
    	<!--  TAG Lib -->
    	<taglib>
    		<taglib-uri>http://java.sun.com/jslt/fmt</taglib-uri>
    		<taglib-location>/WEB-INF/fmt.tld</taglib-location>
    	</taglib>
     
    	<taglib>
    		<taglib-uri>http://java.sun.com/jslt/core</taglib-uri>
    		<taglib-location>/WEB-INF/c.tld</taglib-location>
    	</taglib>
     
    	<taglib>
    		<taglib-uri>/tags/struts-bean</taglib-uri>
    		<taglib-location>/WEB-INF/struts-bean.tld</taglib-location>
    	</taglib>
     
    	<taglib>
    		<taglib-uri>/tags/struts-html</taglib-uri>
    		<taglib-location>/WEB-INF/struts-html.tld</taglib-location>
    	</taglib>
     
    	<taglib>
    		<taglib-uri>/tags/struts-logic</taglib-uri>
    		<taglib-location>/WEB-INF/struts-logic.tld</taglib-location>
    	</taglib>
     
    	<taglib>
    		<taglib-uri>/tags/struts-nested</taglib-uri>
    		<taglib-location>/WEB-INF/struts-nested.tld</taglib-location>
    	</taglib>
     
    	<taglib>
    		<taglib-uri>/tags/struts-tiles</taglib-uri>
    		<taglib-location>/WEB-INF/struts-tiles.tld</taglib-location>
    	</taglib>
     
     
     	<taglib>
           <taglib-uri>/WEB-INF/taglibs-datetime</taglib-uri>
           <taglib-location>/WEB-INF/taglibs-datetime.tld</taglib-location>
         </taglib>
     
     
    	<taglib>
           <taglib-uri>/WEB-INF/sslext</taglib-uri>
           <taglib-location>/WEB-INF/sslext.tld</taglib-location>
         </taglib>
    J'avoue que ça me surprend aussi que l'unique raison soit l'appel d'une directive qui, à mon avis, ne change rien, car elle doit être appelée par défaut (enfin, je suppose).

    néanmoins, en lisant le guide, j'ai vu que pour utiliser EL, une application web J2EE 1.4 (Servlet 2.4 / JSP 2.0) est nécessaire.

    Hors, il semblerait que
    tomcat 5.0 aie les mêmes servlet et jsp que le 5.5
    Donc c'est peut être logique mais honnêtement... j'en sais rien

  13. #13
    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
    D'après le lien que tu as posté :
    Servlet/JSP Spec Apache Tomcat version
    2.5/2.1 6.0.x
    2.4/2.0 5.5.x
    2.3/1.2 4.1.x
    2.2/1.1 3.3.x (archived)
    il faut une 5.5.x pour travailler en J2EE 1.4 (Servlets 2.4/JSP 2.0).

    Or, d'après ton web.xml, tu es en J2EE 1.2 :
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <!DOCTYPE web-app
      PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN"
      "http://java.sun.com/j2ee/dtds/web-app_2_2.dtd">
    Vu que tu as une 5.0, tu pourrais passer en J2EE 1.3 (Servlets 2.3/JSP 1.2) :
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <!DOCTYPE web-app 
        PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" 
        "http://java.sun.com/dtd/web-app_2_3.dtd">
    Sinon, peux-tu préciser quelle version de Struts tu utilises ?

  14. #14
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 21
    Par défaut
    Citation Envoyé par c_nvy Voir le message
    D'après le lien que tu as posté :

    il faut une 5.5.x pour travailler en J2EE 1.4 (Servlets 2.4/JSP 2.0).
    Un peu plus bas dans la même page, ils marquent :
    Apache Tomcat 5.5.x supports the same Servlet and JSP Specification versions as Apache Tomcat 5.0.x. There are significant changes in many areas under the hood, resulting in improved performance, stability, and total cost of ownership. Please refer to the Apache Tomcat 5.5 Changelog for details.

    Or, d'après ton web.xml, tu es en J2EE 1.2 :
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <!DOCTYPE web-app
      PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN"
      "http://java.sun.com/j2ee/dtds/web-app_2_2.dtd">
    Vu que tu as une 5.0, tu pourrais passer en J2EE 1.3 (Servlets 2.3/JSP 1.2) :
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <!DOCTYPE web-app 
        PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" 
        "http://java.sun.com/dtd/web-app_2_3.dtd">
    Sinon, peux-tu préciser quelle version de Struts tu utilises ?
    En effet, je suis noté en 2.2 (bien que les commentaires fassent mention d'une 2_4, mais passons ^^' )


    pour la version de struts,
    si je m'en réfère au fichier "Manifest.mf", je suis en 1.1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Manifest-Version: 1.0
    Created-By: Apache Ant 1.5.1
    Extension-Name: Struts Framework
    Specification-Title: Struts Framework
    Specification-Vendor: Apache Software Foundation
    Specification-Version: 1.1
    Implementation-Title: Struts Framework
    Implementation-Vendor: Apache Software Foundation
    Implementation-Vendor-Id: org.apache
    Implementation-Version: 1.1
    Class-Path:  commons-beanutils.jar commons-collections.jar commons-dig
     ester.jar commons-logging.jar commons-validator.jar jakarta-oro.jar s
     truts-legacy.jar
    désolé de ne pas pouvoir être plus efficace, mes connaissances en struts restent basiques

  15. #15
    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
    Autant pour moi, je n'avais pas lu toute la page.

    Si tu utilisais une version plus récente de Struts, tu aurais pu passer en J2EE 1.4 en modifiant le début du web.xml comme ceci :
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <web-app xmlns="http://java.sun.com/xml/ns/j2ee"
    	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    	xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
    	version="2.4">
    mais les tld de Struts 1.1 ne sont pas adaptées pour fonctionner en J2EE 1.4.

    Enfin, tout ceci n'explique pas pourquoi les EL fonctionnent quand même mais bon, je dirais, tant mieux pour toi.

  16. #16
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par c_nvy Voir le message
    mais les tld de Struts 1.1 ne sont pas adaptées pour fonctionner en J2EE 1.4.
    Pourquoi ??

    Citation Envoyé par c_nvy Voir le message
    Enfin, tout ceci n'explique pas pourquoi les EL fonctionnent quand même mais bon, je dirais, tant mieux pour toi.
    A mon avis il s'agit d'un bug de tomcat : il devrait produire une erreur de compilation !

    théoriquement en servlet/jsp 2.2/1.1 la directive isELIgnored n'existe pas, et cela provoquera surement une erreur sur un serveur d'application purement compatible JSP 1.1.

    Mais à la base Tomcat 5.x est un serveur d'application 2.4/2.0. Les raisons de compatibilité lui permettent de lancer des applications plus "anciennes", et donc ce cas il doit utiliser le moteur JSP 2.0 en forçant le isELIgnored à true pour rester compatible avec la norme JSP 1.1...

    Ici tu forces l'utilisation des ELs sur une page en JSP 1.1 où il ne devrait pas en avoir... Bref il serait plus propre de passer à une application 2.4/2.0 si possible



    Ensuite viens le problème des versions de librairies de tag...
    Il faudrait plus d'info sur celle que tu utilises pour mieux te renseigner, mais globalement avec les JSP 2.0 il faut utiliser les librairies standard et non pas les versions EL.

    Je m'explique : avant les JSP 2.0 on ne pouvait pas utiliser les ELs, donc les librairies de tags ont simulé cela en utilisant des attributs de type "String", et ont eux-même interprété ces chaines de caractères comme une EL. En clair le moteur d'EL était intégré à la librairie de tag : c'est le cas par exemple de Struts-EL.

    Avec les JSP 2.0 il faut utiliser les tags Struts de base, qui n'incorpore pas de moteur d'EL, car c'est fait au niveau du moteur de JSP. Pour le tag c'est comme si on avait utilisé une scriplet (le tag reçoit directement l'objet dans le bon type et non pas une String)

    a++

  17. #17
    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
    Citation Envoyé par c_nvy Voir le message
    mais les tld de Struts 1.1 ne sont pas adaptées pour fonctionner en J2EE 1.4.
    Citation Envoyé par adiGuba Voir le message
    Pourquoi ??
    J'ai effectivement dit une bêtise.
    Je disais ça parce que les balises ont changé dans les tld entre la JSP Tag Library 1.1 et JSP Tag Library 1.2 mais en fait, c'est fonction de la dtd référencée dans la tld et non de la version de J2EE.
    Donc, ne pas tenir compte de cette remarque.

    Pour le reste, merci de ton éclaircissement car je trouvais surprenant que cela fonctionne ainsi.

  18. #18
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 21
    Par défaut
    Citation Envoyé par adiGuba Voir le message
    A mon avis il s'agit d'un bug de tomcat : il devrait produire une erreur de compilation !

    théoriquement en servlet/jsp 2.2/1.1 la directive isELIgnored n'existe pas, et cela provoquera surement une erreur sur un serveur d'application purement compatible JSP 1.1.

    Mais à la base Tomcat 5.x est un serveur d'application 2.4/2.0. Les raisons de compatibilité lui permettent de lancer des applications plus "anciennes", et donc ce cas il doit utiliser le moteur JSP 2.0 en forçant le isELIgnored à true pour rester compatible avec la norme JSP 1.1...
    Donc, si j'ai bien compris, en passant isELIgnored à false, j'enclenche les EL qui fonctionnent avec mon serveur tomcat, mais pas avec ma servlet, mon jsp et mon struts ?
    Et si ça tourne, c'est pas pour autant strict au niveau des versions c'est ça ?

    Pour illustrer, c'est comme si j'utilisais des balises n'existant pas en html strict dans une page notée comme étant du html strict : ça peut fonctionner, mais c'est pas valide et faut pas pleurer si ça le fait pas.


    Ici tu forces l'utilisation des ELs sur une page en JSP 1.1 où il ne devrait pas en avoir... Bref il serait plus propre de passer à une application 2.4/2.0 si possible
    Ouaip, je vais voir si je peux faire ça

    Ensuite viens le problème des versions de librairies de tag...
    Il faudrait plus d'info sur celle que tu utilises pour mieux te renseigner, mais globalement avec les JSP 2.0 il faut utiliser les librairies standard et non pas les versions EL.

    Je m'explique : avant les JSP 2.0 on ne pouvait pas utiliser les ELs, donc les librairies de tags ont simulé cela en utilisant des attributs de type "String", et ont eux-même interprété ces chaines de caractères comme une EL. En clair le moteur d'EL était intégré à la librairie de tag : c'est le cas par exemple de Struts-EL.

    Avec les JSP 2.0 il faut utiliser les tags Struts de base, qui n'incorpore pas de moteur d'EL, car c'est fait au niveau du moteur de JSP. Pour le tag c'est comme si on avait utilisé une scriplet (le tag reçoit directement l'objet dans le bon type et non pas une String)

    a++
    ce que je comprends là dedans, (et c'est sans doute une version "simplifiée" de ce que tu as dit) c'est que, en gros, avant 2.0, on a créé des balises spécifiques pour intégrer le EL, et donc le EL ne fonctionne que dans ces balises, et en 2.0, EL étant bien intégré, il peut être utilisé partout, mais il ne faut pas mélanger les balises avec EL et le EL intégré.

    C'est à peu près ça ?

    Bon, donc, de mon côté, je vois si je peux passer en 2.4/2.0, ou j'utilise les balises el, mais je ne fais pas les deux, sinon c'est mauvais.

    merci en tout cas à vous deux, pour les réponses à mes questions, et plus généralement pour la faq struts, qui est bien foutu.

  19. #19
    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
    Citation Envoyé par phoenix_stealer Voir le message
    merci en tout cas à vous deux, pour les réponses à mes questions
    De rien.

    Citation Envoyé par phoenix_stealer Voir le message
    et plus généralement pour la faq struts, qui est bien foutu.

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

Discussions similaires

  1. récuperer le nom d'un attribut (et non pas sa valeur)
    Par oups! dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 20/11/2012, 14h00
  2. [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
  3. Récuperer la valeur d'un entier
    Par Sniper37 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 16/03/2005, 12h13
  4. Valeur d'un attribut
    Par DarkMoox dans le forum Requêtes
    Réponses: 5
    Dernier message: 10/10/2004, 18h31
  5. [jsp] récuperation de valeur d'un formulaire
    Par peppena dans le forum Servlets/JSP
    Réponses: 12
    Dernier message: 30/03/2004, 21h00

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