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 :

Tag Name [Custom Tags]


Sujet :

Taglibs Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 15
    Points : 19
    Points
    19
    Par défaut Tag Name
    Bonjour, j'ai créer une librairie de tag et je souhaiterais recupéré le nom de mon tag lors de l'interprétation du tag sans avoir a mettre la valeur en dur
    Il y a bien la classe TagInfo qui posède une methode getTagName() mais je ne C pas comment la recuperer a partir de ma classe qui est extend TagSupport.
    Je suis ptete passer a coté
    mais si kk1 connais la solution .
    Merci d'avance

  2. #2
    Membre éclairé Avatar de Hervé Saladin
    Homme Profil pro
    Ingénieur d'études en développement et déploiement d'applications
    Inscrit en
    Décembre 2004
    Messages
    647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur d'études en développement et déploiement d'applications
    Secteur : Service public

    Informations forums :
    Inscription : Décembre 2004
    Messages : 647
    Points : 799
    Points
    799
    Par défaut
    Ben si la classe que tu étend n'a pas ce dont tu as besoin, pourquoi ne pas le rajouter toi meme ? C'est pas tres compliqué :

    -tu ajoute un attribut name dans ta classe :
    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
    public class MonTag extends TagSupport
    {
         private String name;
     
         public void setName(String name)
         {
              this.name=name;
         }
     
         public String getName()
         {
              return this.name;
         }
     
         ..... le reste de ta classe inchangé
    }
    - ensuite, tu n'as plus qu'a déclarer cet attribut dans ton descripteur de taglib (ton fichier .tld) a l'aide d'une balise <attribute>:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <tag>
         <name>MonTag</name>
         etc ....
         <attribute>
              <name>name</name>
              <required>false</required>
         </attribute>
    </tag>

    et le tour est joué

    tu peux a présent spécifier ton attribut name dans l'appel de ton tag en jsp :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <maLib:MonTag name="ohLeBeauTag"> blablabla .... </maLib:MonTag>
    et acceder lorsque tu en aura besoin a ton attribut name a l'aide de tes methodes setName() et getName()

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 15
    Points : 19
    Points
    19
    Par défaut
    Merci pour ta reponse, mais en fait je voudrais savoir si il y a un moyen de recuperer le nom du tag. Par exemple ce que je voudrais c'est recupérer MonTag. Mais pas le nom de la classe, le nom du tag.

    C'est bizarre qu'il n'y ai pas un moyen de récupérer ce nom.

  4. #4
    Membre éclairé Avatar de Hervé Saladin
    Homme Profil pro
    Ingénieur d'études en développement et déploiement d'applications
    Inscrit en
    Décembre 2004
    Messages
    647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur d'études en développement et déploiement d'applications
    Secteur : Service public

    Informations forums :
    Inscription : Décembre 2004
    Messages : 647
    Points : 799
    Points
    799
    Par défaut
    Ben dans l'exemple que je t'ai fourni, le nom du tag est "ohLeBeauTag".
    C'est donc cette chaine de caractère que renverra la methode getName()
    Par exemple ce que je voudrais c'est recupérer MonTag. Mais pas le nom de la classe, le nom du tag.
    Et ben justement : ici , "MonTag" est le nom qui permet d'effectuer, via le descipteur tld, une correspondance vers une classe. Donc, meme si ce nom peut etre différent du nom réel de la classe java (selon ce que tu as mis dans ton tld), au bout du compte "MonTag" désigne bien une classe et pas une instance.
    Je me trompe peut etre, mais il me semble que tu fais une confusion quelque part.
    lorsque tu as :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <maLib:MonTag name="ohLeBeauTag">
    -malib correspond au prefixe que tu as définit dans ta jsp avec un <%@ taglib ..... >, en gros malib designe une taglib
    -MonTag correspond a une classe de tag qui est repertoriée dans la taglib définie ci-dessus.
    - ohLeBeauTag est la valeur de l'attribut name de ton instance de MonTag.

    Si c'est bien "MonTag" que tu veux récuperer, tu peux y acceder dans ton code java avec les methodes objet.getClass() et/ou classe.getName()

    par exemple, si tu est dans une des méthodes d'un tag, tu peux mettre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    this.getClass().getName()

  5. #5
    Membre éclairé Avatar de Hervé Saladin
    Homme Profil pro
    Ingénieur d'études en développement et déploiement d'applications
    Inscrit en
    Décembre 2004
    Messages
    647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur d'études en développement et déploiement d'applications
    Secteur : Service public

    Informations forums :
    Inscription : Décembre 2004
    Messages : 647
    Points : 799
    Points
    799
    Par défaut
    PS :
    enfin, si tu veux récuperer le nom 'logique' du tag, c'est a dire celui qui est defini dans le tld et qui permet de faire le mappage vers la classe java, tu ne peux pas le faire dans le code meme du tag, car la classe java est indépendante de la tld, donc un tag ne sait pas quel nom on lui a donné dans cette tld. en plus, il peut y avoir plusieures tld qui pointent vers la meme classe avec des noms de tag différents ....
    Si VRAIMENT tu y tiens, tu peux toujours aller parser ton descripteur de tag (c'est du xml donc ca se fait sans trop de probleme), mais alors la ton tag deviendra spécifique à ton appli, et il ne marchera plus si tu essaye de t'en servir dans une autre appli, ou si tu change ton tld de place etc .....
    Berf, c'est pas 'propre' du tout ....

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 15
    Points : 19
    Points
    19
    Par défaut
    Ouais, je sais que je pourrais faire une correspondance nom de classe <-> nom du tag, mais je voulais etre sur qu'on ne puisse pas récupérer le nom du tag.

    C'est quand meme bizarre, y a pas moyen de recuperer le nom du tag en utilisant la classe TagInfo?

    Je voulais recuperer directement le nom du tag pour des facilité de maintenance mais si on ne peux pas tant pis....

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 15
    Points : 19
    Points
    19
    Par défaut
    Au fait, merci!!!

  8. #8
    Membre éclairé Avatar de Hervé Saladin
    Homme Profil pro
    Ingénieur d'études en développement et déploiement d'applications
    Inscrit en
    Décembre 2004
    Messages
    647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur d'études en développement et déploiement d'applications
    Secteur : Service public

    Informations forums :
    Inscription : Décembre 2004
    Messages : 647
    Points : 799
    Points
    799
    Par défaut
    J'ai du mal à comprendre ce qui te pose problème :
    le nom du tag n'est pas écrit en 'dur' puisqu'il est défini dans ton fichier .tld
    C'est justement à ça que sert ce fichier à mon avis : il faut le voir comme un fichier de configuration de la taglib en quelque sorte ....
    sinon, je viens de penser a un truc : une bonne raison pour laquelle on ne peut pas vraiment recuperer ce nom dans le code est la suivante :
    ta jsp est compilée par ton serveur applicatif et transformée en servlet avant d'etre executée. Donc exit le MonTag !
    si tu as une ligne de jsp comme cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <maLib:MonTag name="ohLeBeauTag">
    Si le nom "MonTag" pointe via la tld vers une classe "UnTag.java"
    Dans la servlet qui découle de la jsp, ca doit donner approximativement quelque chose dans ce genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    UnTag nom_dInstanceN = new UnTag();
    nom_dInstanceN.setName("ohLeBeauTag");
    nom_dInstanceN.doTag();     (ou doStartTag, selon le type de tag que tu utilise)
    Tu vois bien que le nom logique 'MonTag' ne sert a rien sinon a retrouver la classe UnTag et n'est donc pas gardé ....
    enfin, je me trompe peut etre mais c'est la façon dont je vois les choses

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 15
    Points : 19
    Points
    19
    Par défaut
    en fait je voulais que l'utilisateur de ma libraire puisse configurer certains attributs de mes tags et ainsi utiliser un fichier properties qui dit pour tel tag utiliser tel valeur.... Mais si je ne peux pas recuperer le nom du tag je vais le stocker en tant que constante dans ma classe.

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

Discussions similaires

  1. Différences entre TAG et NAME
    Par acheo dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 05/04/2011, 01h56
  2. Parser un fichier xml avec des tag names contenant ":" !
    Par sofien dans le forum Format d'échange (XML, JSON...)
    Réponses: 1
    Dernier message: 26/11/2010, 10h40
  3. [Hudson] CVS plugin - Checkout release tag name
    Par kij dans le forum Intégration Continue
    Réponses: 1
    Dernier message: 17/06/2010, 11h01
  4. [jsf + richfaces] Exception : no tag was defined for name
    Par fisherprice dans le forum Servlets/JSP
    Réponses: 0
    Dernier message: 13/04/2010, 14h33

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