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

JSF Java Discussion :

[JSF] custom UI Component & Tag facelet


Sujet :

JSF Java

  1. #1
    Membre averti
    Inscrit en
    Juin 2005
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 45
    Par défaut [JSF] custom UI Component & Tag facelet
    bonjour,
    voila j'ai un drole de probleme,
    j'utilise dans mon projet JSF, facelets, et ICEfaces,
    alors pour mes besion javascript je dois absolument developez ma propre tag, je lé ajouté
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <context-param>
    		<param-name>facelets.LIBRARIES</param-name>
    		<param-value>/WEB-INF/taglib.xml</param-value>
    	</context-param>
    & dans taglib.xml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <facelet-taglib>
     
    	<namespace>http://www/tags</namespace>
     
    	<tag>
    		<tag-name>echo</tag-name>
    		<source>tags/echo.xhtml</source>
    	</tag>
    </facelet-taglib>
    jusqu'a mnt tout et normale, et ca marche a merveil, par contre j'ai remarqué que jsf ne pends pa en consideration ma nouvelle tag dans son arbre de composent (si je me permet de le dire ), par ce que il execte pa mon tag jusqu'a ce que je redemmande la page ,
    ce qui ma pousser a custom JSF UI Component , j'ai crée ma tag sur un projet vide , ca marche bien, mais si je l'ajout dans mon projet , elle déclache pas d'exception, mais elle s'execute pas elle s'affiche comme elle-est dans la page
    c bizare, n'est-ce pas, exmple :<d:echo></d:echo>

  2. #2
    Expert confirmé
    Avatar de djo.mos
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    4 666
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 666
    Par défaut
    Tu devrais commencer par renommer ton fichier taglib.xml en unNom.taglib.xml, puisque taglib.xml est l'extension du descripteur de tags dans facelets.

    Ensuite, essaies d'utiliser un namespace un peu plus potable dans unNom.taglib.xml, du genre http://www.toi.com/tesTags.

    Enfin, assures toi que tu a importé le descripteur des tags dans ta page xhtml: ton problème, à savoir le fait qu'il n'exécute pas les tags, provient certainement du fait que facelets ne reconnait pas le namespace d.
    Importes le dans ta xhtml avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <html xmlns="http://www.w3.org/1999/xhtml"
        xmlns:ui="http://java.sun.com/jsf/facelets"
        xmlns:f="http://java.sun.com/jsf/core"
        xmlns:h="http://java.sun.com/jsf/html"
        xmlns:d="http://www.toi.com/tesTags">
    Voilà.

  3. #3
    Membre averti
    Inscrit en
    Juin 2005
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 45
    Par défaut Re : bonjour
    ok merci djo.mos,
    je voulais juste tu dire que ce que tu ma dis je les dejas fais,
    je voilais juste laissse l'anonymat de ma societé tout simplement,
    c ups.taglib.xml et aussi http://www.ups.com/tesTags
    importation aussi c fé normalement!

  4. #4
    Expert confirmé
    Avatar de djo.mos
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    4 666
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 666
    Par défaut
    Juste pour vérifier : Tu as bien le dossier tags dans WEB-INF ? je veux dire que le chemin du source qu'on donne dans xxx.taglib.xml est relatif à ce dernier.

    Sinon, vérifies s'il te plaît le log de démarrage de ton serveur : il se peut qu'il y ait une erreur au démarrage.

  5. #5
    Membre averti
    Inscrit en
    Juin 2005
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 45
    Par défaut ok
    Mr, djo.mos
    j'espère que vous avez bien compris mon pb, j'ai pas erreur syntaxique,

    j'aimerai bien comprendre pour koi , ma 2eme tag, avec JSF UI Component, marche parfetement dans un projet vide,mais avec facelets et icefaces , elle s'affiche comme elle-est ecrite,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <application>
    		<locale-config/>
    		<view-handler>
    			com.icesoft.faces.facelets.D2DFaceletViewHandler
    		</view-handler>
    	</application>
     
     
    	<component>
    		<component-type>echo</component-type>
    		<component-class>ups.tag.UIEcho</component-class>
    	</component>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <taglib>
    	<tlib-version>1.0</tlib-version>
    	<jsp-version>1.2</jsp-version>
    	<short-name>d</short-name>
    	<uri>http://www.ups.com/tags</uri>
    	<tag>
    		<name>echo</name>
    		<tag-class>ups.tag.EchoTag</tag-class>
     
    	</tag>
    </taglib>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    xmlns:f="http://java.sun.com/jsf/core"
    	xmlns:trc="http://www.ups.com/tags">
    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 UIEcho extends UIOutput {
     
     
    	public void encodeBegin(FacesContext context) throws IOException {
    		ResponseWriter writer = context.getResponseWriter();
    	    writer.startElement("div", this);
    	}
     
    	public void encodeEnd(FacesContext context) throws IOException {
    		ResponseWriter writer = context.getResponseWriter();
     
    		writer.endElement("div");
    	}
     
    }
    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
    public class EchoTag extends UIComponentTag{
     
    	public void release() {
    		// the super class method should be called 
    		super.release();
    	}
     
    	protected void setProperties(UIComponent component) {
    		// the super class method should be called 
    		super.setProperties(component);
     
    	}
    	public String getComponentType() {
    		return "echo";
    	}
     
    	public String getRendererType() {
    		// null means the component renders itself
    		return null;
    	}
     
    }

  6. #6
    Expert confirmé
    Avatar de djo.mos
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    4 666
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 666
    Par défaut
    Je crois que le problème vient du fait que tu as utilisé le ViewHandler de Facelets fourni par IceFaces :
    <view-handler>
    com.icesoft.faces.facelets.D2DFaceletViewHandler
    </view-handler>
    Normalement, Facelets fournit son propre ViewHandler
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <view-handler>
      com.sun.facelets.FaceletViewHandler
    </view-handler>
    Mais je comprends que pour faire cohabiter les deux, il faut que tu utilises celui fourni par IceFaces qui parait il ne fait pas correctement son boulot ...
    problème de compatibilité entre versions peut être ...

    T'as essayé de faire une recherche dans le jira d'IceFaces sur ton problème ?
    Sinon, désolé, je ne peux plus t'aider sur ce point.

  7. #7
    Membre averti
    Inscrit en
    Juin 2005
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 45
    Par défaut merci
    oui je pense aussi que le ViewHandler de icefaces qui cloche,
    par contre j'ai trouvé ce post [Facelets] Problème avec un Custom component
    mais mad-math n'a pas bien expique ce qu'il a fais a la fin ,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <facelet-taglib>
        <namespace>/WEB-INF/customs</namespace>
        <tag>
          <tag-name>spinner</tag-name>
          <component>
            <component-type>spinner</component-type>
          </component>
        </tag>
    </facelet-taglib>
    <namespace>/WEB-INF/customs</namespace> ????? ne me dis rien, puis il declare plus ces class!

  8. #8
    Expert confirmé
    Avatar de djo.mos
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    4 666
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 666
    Par défaut
    En ce qui concerne le namespace, habituellement on met des URL mais rien ne t'empêche de mettre ce que bon te semble, un chemin par exemple dans le cas de mad-math : "WEB-INF/customs".

    Pour ta suestion à propos de la classe, mad-math a passé par un fichier tld et un taglib.xml : la classe est declaré dans le tld ... ça me parait bizarre à moi aussi mais peut être que JSF et facelets font automatiquement le lien entre le taglib et le tld ...

  9. #9
    Membre averti
    Inscrit en
    Juin 2005
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 45
    Par défaut merci bq
    c ce que j'ai senti c bizarre mais bon je les testé et ca marche , JSF et facelets font le lien entre le taglib et le tld!


    c ma premier participation , et mon pb resolu , je vois bien que la plus part des posts ne sont pas resolu, (je regret pour eux)
    et je suis ravie d'etre parimi vous,

  10. #10
    Expert confirmé
    Avatar de djo.mos
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    4 666
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 666
    Par défaut
    C'est vrai que dans le forum de JSF, beaucoup trop de posts ne sont pas résolus ... mais ça vient surtout des posts abandonnés : quelqu'un pose sa question, on s'efforce d'y répondre mais il ne revient jamais pour confirmer ou le marquer comme résolu.
    De plus, il y'a très peu de développeurs JSF sur DVP, pour l'instant du moins...

    En tout cas, bienvenu à toi !

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

Discussions similaires

  1. JSF rich:fileUpload component
    Par len1sensibl dans le forum JSF
    Réponses: 9
    Dernier message: 15/09/2010, 21h50
  2. Réponses: 9
    Dernier message: 24/04/2010, 10h03
  3. JSF Calendar / Schedule component
    Par alarcher dans le forum JSF
    Réponses: 8
    Dernier message: 16/10/2008, 10h43
  4. custom component en jsf. gerer les encodeChildren
    Par ouedmouss dans le forum JSF
    Réponses: 1
    Dernier message: 29/06/2006, 19h23
  5. [JSF] mon premier custom component
    Par anitshka dans le forum JSF
    Réponses: 5
    Dernier message: 14/06/2005, 13h31

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