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] mon premier custom component


Sujet :

JSF Java

  1. #1
    Membre confirmé Avatar de anitshka
    Inscrit en
    Mai 2004
    Messages
    624
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 624
    Points : 605
    Points
    605
    Par défaut [JSF] mon premier custom component


    je commence avec les custom components... et je galère un peu...
    en fait je suis le tutoriel de www.jsftutorials.net qui me semble très bien fait...

    mais je comprend pas... je fait bien toutes les création de fichier...
    mais jbuilder continue de me ne pas reconnaitre mon composant (très basique)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <d:ticker>
            <f:verbatim>Hello JSF Component</f:verbatim>
    </d:ticker>
    je pense que ca vient du fait que ma classe UITicker n'est pas prise en compte dans mon archive WEB-INF/classes/ticker

    il dois me manquer une ligne dans mon faces-config.xml:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE faces-config PUBLIC "-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.1//EN" "http://java.sun.com/dtd/web-facesconfig_1_1.dtd">
    <faces-config xmlns="http://java.sun.com/JSF/Configuration">
    	<component>
    		<component-type>ticker</component-type>
    		<component-class>ticker.TickerTag</component-class>
    	</component>
    </faces-config>
    il doit me manquer un petit truc au niveau du component... mais quoi ?
    d'avance!

  2. #2
    Membre confirmé Avatar de anitshka
    Inscrit en
    Mai 2004
    Messages
    624
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 624
    Points : 605
    Points
    605
    Par défaut
    bon vu que je ne trouve toujours pas... je vais essayer d'autres pistes...

    voici mon fichier tld qui se trouve dans mon WEB-INF

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"
    "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">
    <taglib>
    	<tlib-version>1.0</tlib-version>
    	<jsp-version>1.2</jsp-version>
            <short-name>d</short-name>
    	<uri>http://jsftutorials.com/</uri>
    	<tag>
    		<name>ticker</name>
    		<tag-class>ticker.TickerTag</tag-class>
    		<body-content>JSP</body-content>
    	</tag>
    </taglib>
    voici mon fichier TickerTag.java (dont le .class se trouve dans mon WEB-INF/classes apres compilation dans mon war)
    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
    package ticker;
     
    import javax.faces.component.UIComponent;
    import javax.faces.webapp.UIComponentTag;
     
    public class TickerTag
        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 "ticker";
      }
     
      public String getRendererType() {
        // null means the component renders itself
        return null;
      }
    }
    Voici mon fichier UITicker.java qui ne se trouve que dans mon projet mais pas dans mon WEB-INF/classes apres compilation dans mon war
    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
    package ticker;
    import java.io.IOException;
    import javax.faces.component.UIOutput;
    import javax.faces.context.FacesContext;
    import javax.faces.context.ResponseWriter;
     
    public class UITicker 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");
            }
    }
    voici le contenu de ma JSP
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
    <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
    <%@ taglib uri="http://jsftutorials.com/" prefix="d" %>
    <html>
    	<head>
    	</head>
    	<body>
    	  <f:view>
    	    <d:ticker>
    	      <f:verbatim>Hello JSF Component</f:verbatim>
    	    </d:ticker>
    	  </f:view>
    	</body>	
    </html>
    et il ne reconnait pas mon <d:ticker>
    voila si quelqu'un arrive a comprendre je veux bien profiter de ses lumières

  3. #3
    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
    euh, je vais peut etre dire une annerie, mais dans la declaration de ton taglib de ta jsp, c'est normal que tu fasse référence a l'adresse du tutorial ?
    Si ta classe est dans ton appli, moi je verrais plutot quelque chose comme ca :
    <%@ taglib uri="/WEB-INF/ton_descripteur_de_taglib.tld" prefix="d" %>
    Tu n'aurais pas fait un copier-coller de l'exemple que tu a trouvé sur ton tuto des fois ? ....

  4. #4
    Membre confirmé Avatar de anitshka
    Inscrit en
    Mai 2004
    Messages
    624
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 624
    Points : 605
    Points
    605
    Par défaut
    MERCI
    Tu n'aurais pas fait un copier-coller de l'exemple que tu a trouvé sur ton tuto des fois ? ....
    c'est exactement ca! en fait je suis toute seule sur ce projet et j'essaye de comprendre comment ca marche avant de me lancer dans un truc plus compliqué...
    J'ai lu dans le tuto que pour cette uri, l'important etait quelle soit unique ... je n'avais pas compris que ca devait faire reference au fichier tld...

    merci

  5. #5
    Membre confirmé Avatar de anitshka
    Inscrit en
    Mai 2004
    Messages
    624
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 624
    Points : 605
    Points
    605
    Par défaut
    bon il accepte mon tag maintenant... mais a l'execution j'ai toujours:
    ApplicationDispatcher[/monComponent]: Servlet.service() for servlet debugjsp threw exception
    java.lang.ClassCastException
    at com.sun.faces.application.ApplicationImpl.createComponent(ApplicationImpl.java:355)
    at javax.faces.webapp.UIComponentTag.createComponent(UIComponentTag.java:1022)
    at javax.faces.webapp.UIComponentTag.createChild(UIComponentTag.java:1045)
    at javax.faces.webapp.UIComponentTag.findComponent(UIComponentTag.java:742)
    et ma UITicker.class n'est toujours pas dans mon WEB-INF/Classes....

  6. #6
    Membre confirmé Avatar de anitshka
    Inscrit en
    Mai 2004
    Messages
    624
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 624
    Points : 605
    Points
    605
    Par défaut
    c'est bon j'ai trouvé
    Ca venait d'une erreur d'étourderie dans la tld !
    !

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

Discussions similaires

  1. [JSF] mon premier JSF:Cannot find FacesContext
    Par anitshka dans le forum JSF
    Réponses: 15
    Dernier message: 24/08/2007, 18h19
  2. Réponses: 3
    Dernier message: 28/05/2007, 12h13
  3. Custom Component JSF et EL ?
    Par toutoune60 dans le forum JSF
    Réponses: 5
    Dernier message: 03/11/2006, 15h14
  4. custom component en jsf. gerer les encodeChildren
    Par ouedmouss dans le forum JSF
    Réponses: 1
    Dernier message: 29/06/2006, 19h23
  5. [debutant]Mon premier prog OpenGL
    Par Revan777 dans le forum OpenGL
    Réponses: 5
    Dernier message: 04/04/2005, 17h40

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