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 :

Création d'un composant JSF


Sujet :

JSF Java

  1. #1
    Invité
    Invité(e)
    Par défaut Création d'un composant JSF
    Bonjour,

    Je tente de créer un composant JSF (pour le moment très proche d'un Hello World ), mais cela ne fonctionne pas. Je dois donc oublier une étape importante.

    Je créer un jar avec mon composant :
    • un fichier tld dans META-INF

      <taglib>
      <tlib-version>1.0</tlib-version>
      <jsp-version>1.2</jsp-version>
      <short-name>itframework</short-name>
      <uri>http://www.mycompany.fr/jsf</uri>

      <tag>
      <name>ticker</name>
      <tag-class>fr.mycompany.TickerTag</tag-class>
      </tag>
      </taglib>
    • un fichier faces-config.xml dans META-INF
      <?xml version="1.0" encoding="UTF-8"?>
      <faces-config xmlns="http://java.sun.com/xml/ns/javaee"
      xmlnssi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd"
      version="1.2">

      <component>
      <component-type>ticker</component-type>
      <component-class>fr.mycompany.UITicker</component-class>
      </component>
      </faces-config>
    • TickerTag
      public class TickerTag extends UIComponentELTag {

      @Override
      public String getComponentType() {
      return "ticker";
      }
      }
    • UITicker : public class UITicker extends UIOutput


    Donc à priori, j'ai bien le fichier tld pour définir de nouveaux tags. Ma class TickerTag qui, avec la méthode getComponentType renvoit la même valeur que celle définie dans le fichier faces-config.xml. Ceci doit me permettre de faire le lien avec la classe UITicker

    Dans mon war, je défini une portlet, et dans le fichier form.xhtml, j'ai ceci :

    • Import de la taglib
      <ui:composition xmlns="http://www.w3.org/1999/xhtml"
      xmlns:ui="http://java.sun.com/jsf/facelets"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:a4j="http://richfaces.org/a4j"
      xmlns:rich="http://richfaces.org/rich"
      xmlns:itf="http://www.mycompany.fr/jsf">
    • Utilisation du tag

      <itf:ticker>
      <f:verbatim>Hello JSF Component</f:verbatim>
      </itf:ticker>


    Et, je n'ai aucune erreur, le tag n'est pas remplacé lors de la création de la page. Je suppose que mon fichier tld n'est pas pris en compte, mais je ne vois pas ce qui manque.

    Quelqu'un pourrait-il m'indiquer ce qu'il manque ?

    Merci,

  2. #2
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 938
    Par défaut
    Suis plutot ce lien pour créer des composants personnalisés avec facelets ici

  3. #3
    Invité
    Invité(e)
    Par défaut
    Ok, merci. Je vais regarder ce qu'il en est.
    Dernière modification par Invité ; 19/07/2010 à 10h38.

  4. #4
    Invité
    Invité(e)
    Par défaut
    Désolé pour le retard, je regardais d'autres points.

    En fait, le lien ne me convient pas car c'est de la composition de composants existants. Or le composant que je veux n'existe pas selon mes contraintes.

    Je suis contraint d'utiliser Richfaces avec des portlets, et j'aurais besoin d'un composant correspondant au code html <input type="file"/>

    - Tomahawk : composant qui me conviendrait, mais ne marche pas dans une portlet. Il existe un patch, mais cela ne convient pas à ma boite

    - Richfaces : le composant rich:uploadFile ne convient pas au niveau du look. A la limite avec display:none, mais je ne vois pas comment stimuler les boutons add et upload du composant

    - Icefaces : Gênant d'avoir richfaces et icefaces. Surtout qu'il y aurait une portlet Icefaces et tout le reste en Richfaces

    Donc, en désespoir de cause, je comptais faire mon composant et utiliser commons-fileupload. Si quelqu'un à une meilleure idée, je suis preneur...


  5. #5
    Invité
    Invité(e)
    Par défaut
    Oups, mauvaise lecteur de ma part concernant le lien donné.

    Il me manquait la definition d'un fichier *.taglib.xml afin de faire le lien entre mes composants et l'application.

    Merci.

  6. #6
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 938
    Par défaut
    En effet, c'est dans ce fichier que tu declares les composants qui seront appelés dans ton code, c'est bien décrit dans le lien que je t'ai envoyé.bon courage

Discussions similaires

  1. Création Composant JSF
    Par Logarythme dans le forum JSF
    Réponses: 3
    Dernier message: 29/04/2011, 04h33
  2. Réponses: 0
    Dernier message: 13/11/2009, 15h03
  3. Réponses: 1
    Dernier message: 06/07/2009, 16h38

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