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

Spring Web Java Discussion :

Librairie de tag personnalisée


Sujet :

Spring Web Java

  1. #1
    Nouveau membre du Club
    Inscrit en
    Février 2005
    Messages
    48
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Février 2005
    Messages : 48
    Points : 39
    Points
    39
    Par défaut Librairie de tag personnalisée
    Bonjour à tous,

    Je suis en train de redéfinir la librairie de tag de spring pour des besoins particuliers.

    Je bute sur un point, j'aimerais créer un super tag contenant un <label> et un <input>. Mais je n'y parviens pas, j'ai créé mon SuperTag qui étend AbstractHtmlInputElementTag et dans lequel je crée un objet inputTag et un objet labelTag et pour chacun d'eux j'appel la métode writeContent() mais je me prends des erreurs.

    Pour l'instant, ce qui marche c'est une classe qui étend InputTag, dans laquelle je redéfinit la méthode writeContent(), et dans laquelle je recrée a la main ma balise label ( tagWriter.startTag("label") ..... tagWriter.endTag())

    Ok ça, ça marche, mais du coup je perd toutes les fonctionnalités plutôt intéressantes comme par exemple setCssClass, setFor, etc etc...

    Quelqu'un a t'il une idée pour créer un super Tag ?
    Je l'appelerai dans ma page JSP de la façon suivante :
    <monPrefix : SuperTag path="monPath" value="myValue"/> et ce bout de code génèrerai en html <label>myValue</label><input type="text" value=""/>

    Voila
    Merci a tous
    Arno

  2. #2
    Rédacteur
    Avatar de Hikage
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    1 177
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 177
    Points : 6 301
    Points
    6 301
    Par défaut
    Sous quel serveur travaille tu ?

    Parce que si tu utilise un serveur qui prends en charge JSP 2.0, il y un système bien pratique si tu dois faire des "tags" qui ne font que comprendre d'autre tag : les fichier .tag

    Voir ici : http://adiguba.developpez.com/tutori...p/taglib/#L3.4
    Hikage
    SCJP / SCWCD & SCWSJD Certified / Spring Framework Certified
    [Personal Web] [CV]

    F.A.Q Spring Framework - Participez !

  3. #3
    Nouveau membre du Club
    Inscrit en
    Février 2005
    Messages
    48
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Février 2005
    Messages : 48
    Points : 39
    Points
    39
    Par défaut
    Salut,

    merci pour le lien,très interessant, mais je ne suis pas sur que ça puisse convenir à mon problème. En fait, comme j'utilise l'api SpringMVC, je vais hériter directement de ses tags (org.springframework.web.servlet.tags.form) je vais donc pouvoir utiliser tous les mécanismes associés avec spring (ex:bind)

    J'ai un fichier .tld décrivant l'ensemble de mes tags auxquelles je fais référence dans ma page jsp par <%@ taglib uri="/WEB-INF/mesTag.tld" prefix="prefix" %>.

    Peut être que je peux remplacer ce fichier de description par un fichier .tag ?

    Je vais voir

    merci encore
    Arnaud

  4. #4
    Rédacteur
    Avatar de Hikage
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    1 177
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 177
    Points : 6 301
    Points
    6 301
    Par défaut
    je ne pense pas qu'on puisse remplacer le tld par un tag.
    A partir du moment ou tu créer des tag via des classes Java, il te faut un TLD.

    Le fichier .tag offre une autre manière de développer des tags.

    Personnelement, j'avais fait une fois un "super tag" du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <my:TextFieldWithHelp path="myCommand.myproperty" labelCode="codeI18n" helpCode="codeI18n" size="10" cssClass="formField"/>
    Et au niveau du fichier tag cela ressemblait à ceci :

    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
     
     
    // include d'un header qui contient les taglib de spring, jstl and co
     
    <%@ attribute name="path"  required="true" description="Spring bind path" %>
    <%@ attribute name="labelCode"  required="true" description="I18nCode" %>
    <%@ attribute name="helpCode"  required="true" description="I18n code for help" %>
    <%@ attribute name="cssClass"  required="true" description="Spring bind path" %>
     
    <!-- Affichage du label -->
     
    <fmt:message key="${labelCode}"/>
     
    <!-- Affichage du champ texte et liaison avec Spring -->
     
    <spring:bind path="${path}">
    <input  type="text"  value="{status.value}"  name="${status.expression}">
                <c:if test="${status.error}">
                    Erreur :
                    <c:forEach items="${status.errorMessages}" var="error">
                        <c:out value="${error}"/>
                    </c:forEach>
                </c:if>
    </spring:bind>
     
    <!-- Affichage du message d aide  -->
     
    <fmt:message key="${helpCode}"/>

    Voila, j'avais cru que cela pourrait t'aider
    Mais j'ai peut être mal compris ce que tu voulais !
    Hikage
    SCJP / SCWCD & SCWSJD Certified / Spring Framework Certified
    [Personal Web] [CV]

    F.A.Q Spring Framework - Participez !

  5. #5
    Nouveau membre du Club
    Inscrit en
    Février 2005
    Messages
    48
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Février 2005
    Messages : 48
    Points : 39
    Points
    39
    Par défaut
    re,

    En fait ta solution correspond bien à ce que je veux mais je ne sais pas si je peux l'implémenter, je m'explique :

    Ce que je veux dans ma page JSP : <my:superTag path="path" metaDonne="meta"/>

    c'est au niveau des metaDonnee que j'ai un problème... les metaDonnees dans mon application regroupe les données des données, en fait par ex pour le champ "montant" je récupère toutes les infos concernant ce champ : son libellé, sa taille, son style, texte d'aide etc etc...

    Donc au final dans mon html j'obtenais <label>libelle</label><input type="text" size="10" value="1" class="style".../>

    Dans mes classes tag java je récupère ce meta par un setMeta(Meta) puis lors de la construction du champ, j'attribus mes données : setSize(meta.getSize()); setClassCss(meta.getStyle());etc etc

    Voila pourquoi j'hérite des tag de spring. Est ce que je peux faire ce genre de chose a partir du fichier de tag ?

    Merci encore

  6. #6
    Rédacteur
    Avatar de Hikage
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    1 177
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 177
    Points : 6 301
    Points
    6 301
    Par défaut
    Je pense que cela ne devrait pas poser de problème en soit.

    Les attributs que tu passe ne sont pas forcement des chaines de caractère,cela peut très bien etre des objets.

    Par exemple si tu as un object Metadata qui contient des proprietes Size, Style, Libelle

    Tu le declasse comme un attribut Metadata :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    <%@ attribute name="meta"  required="true" description="MEtadata" type="com.package.de.ton.choix.Metadata"  %>
    Et ensuite dans le corps du tag :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     
    <spring:bind path="${path}">
    <label>${meta.libelle}</label><input type="text" size="${meta.size}" value="${status.expression}" class="${meta.style}".../>
    </spring>
    Hikage
    SCJP / SCWCD & SCWSJD Certified / Spring Framework Certified
    [Personal Web] [CV]

    F.A.Q Spring Framework - Participez !

  7. #7
    Nouveau membre du Club
    Inscrit en
    Février 2005
    Messages
    48
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Février 2005
    Messages : 48
    Points : 39
    Points
    39
    Par défaut
    En effet ça a l'air très bien, ça pourrait me débloquer également dans un autre problème que j'avais, c'est que j'ai des données qui sont en lecture seul donc je voulais qu'a la place de faire un input, il place plutot un label. si je peux faire des blocs conditionnels en plus dans mes tags c'est parfait. Je vais en discuter avec ma chef.

    Pour l'instant on utilise tomcat 5.0.24, je ne sais pas si c'est compatible jsp 2.0.

    Je vais faire quelques essais

    Merci

  8. #8
    Rédacteur
    Avatar de Hikage
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    1 177
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 177
    Points : 6 301
    Points
    6 301
    Par défaut
    A premiere vue :

    This is the top-level entry point of the documentation bundle for the Apache Jakarta Tomcat Servlet/JSP container. Tomcat version 5 implements the Servlet 2.4 and JavaServer Pages 2.0 specifications from the Java Community Process, and includes many additional features that make it a useful platform for developing and deploying web applications and web services.
    D'apres le site de Tomcat
    Hikage
    SCJP / SCWCD & SCWSJD Certified / Spring Framework Certified
    [Personal Web] [CV]

    F.A.Q Spring Framework - Participez !

Discussions similaires

  1. Tag personnalise : attribut
    Par adrien1 dans le forum Servlets/JSP
    Réponses: 0
    Dernier message: 24/01/2010, 20h28
  2. recherche librairie pour tag ID3v2
    Par maitranquille dans le forum Général Dotnet
    Réponses: 1
    Dernier message: 11/06/2008, 16h47
  3. les librairies de tags pour le développement web
    Par zizoux5 dans le forum Struts 1
    Réponses: 1
    Dernier message: 04/05/2007, 16h05
  4. [Taglib] Librairie de tags EL
    Par mymyma dans le forum Struts 1
    Réponses: 5
    Dernier message: 13/06/2006, 16h35
  5. jsp et librairie de tags <jsp:..>
    Par zais_ethael dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 26/05/2006, 14h15

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