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 :

Custom Component ne s'affiche pas lorsque je le génère dans le ManagedBean


Sujet :

JSF Java

  1. #1
    Membre averti Avatar de danyboy85
    Homme Profil pro
    Développeur Java
    Inscrit en
    Décembre 2005
    Messages
    548
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Décembre 2005
    Messages : 548
    Points : 312
    Points
    312
    Par défaut Custom Component ne s'affiche pas lorsque je le génère dans le ManagedBean
    Bonjour,

    j'ai fait un binding sur un composant que je génère côté serveur, dans le constructeur de mon ManagedBean :

    Code du ManagedBean :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    public class MonManagedBean {
     
         private UIPanel panel;
     
         public MonManagedBean {
              panel = new UIPanel();
              UIOutput outpout = new UIOutput();
              outpout.setId("out" + i);
              outpout.setValue("test");
              panel.getChildren().add(output);
         }
     
    }
    Code de la page jsp :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <h:panelGrid binding="#{monManagedBean.panel}" columns="1" />

    Cela fonctionne très bien.

    Par contre lorsque je remplace le UIOutput par un composant que j'ai moi même créé, le panel conteneur s'affiche bien mais mon composant ne s'affiche pas.

    Pourtant j'ai déjà utilisé ce composant en le déclarant directement dans la JSP et il s'affiche bien.

    Quelqu'un saurait-il m'expliquer pourquoi ?

    Merci

  2. #2
    Rédacteur
    Avatar de romaintaz
    Homme Profil pro
    Java craftsman
    Inscrit en
    Juillet 2005
    Messages
    3 790
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Java craftsman
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2005
    Messages : 3 790
    Points : 7 275
    Points
    7 275
    Par défaut
    C'est assez étrange en effet.
    Est-ce les méthodes encodeBegin et encodeEnd de ton custom component sont bien appelées par JSF ?

  3. #3
    Membre averti Avatar de danyboy85
    Homme Profil pro
    Développeur Java
    Inscrit en
    Décembre 2005
    Messages
    548
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Décembre 2005
    Messages : 548
    Points : 312
    Points
    312
    Par défaut
    Oui j'ai mis un point d'arrêt dans le encodeBegin et il y passe bien

  4. #4
    Rédacteur
    Avatar de romaintaz
    Homme Profil pro
    Java craftsman
    Inscrit en
    Juillet 2005
    Messages
    3 790
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Java craftsman
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2005
    Messages : 3 790
    Points : 7 275
    Points
    7 275
    Par défaut
    Et le code HTML généré dans ta page est correct ?
    Il ne manque rien, pas de HTML mal écrit ?

  5. #5
    Membre averti Avatar de danyboy85
    Homme Profil pro
    Développeur Java
    Inscrit en
    Décembre 2005
    Messages
    548
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Décembre 2005
    Messages : 548
    Points : 312
    Points
    312
    Par défaut
    Non, le code généré est le suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <table>
         <tbody>
              <tr>
                   <td></td> 
              </tr>
         </tbody>
    </table>
    Le code du panel est donc bien généré mais rien dans <td></td> ...

  6. #6
    Membre averti Avatar de danyboy85
    Homme Profil pro
    Développeur Java
    Inscrit en
    Décembre 2005
    Messages
    548
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Décembre 2005
    Messages : 548
    Points : 312
    Points
    312
    Par défaut
    Je me permets de relancer le sujet car je n'ai pas trouvé de solution.

    Si quelqu'un a une idée...

  7. #7
    Rédacteur
    Avatar de romaintaz
    Homme Profil pro
    Java craftsman
    Inscrit en
    Juillet 2005
    Messages
    3 790
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Java craftsman
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2005
    Messages : 3 790
    Points : 7 275
    Points
    7 275
    Par défaut
    Tu peux nous donner le code de ton custom component (surtout les encodeBegin et encodeEnd), ainsi que le code de l'ajout de ton component dans le UIPanel ?

  8. #8
    Membre averti Avatar de danyboy85
    Homme Profil pro
    Développeur Java
    Inscrit en
    Décembre 2005
    Messages
    548
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Décembre 2005
    Messages : 548
    Points : 312
    Points
    312
    Par défaut
    Code du encodeBegin :

    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
     
    public void encodeBegin(FacesContext facesContext, UIComponent component) throws IOException {
     
            UITaskPanel tp = (UITaskPanel)component;
            if (tp.getMyid() == null) tp.setMyid("");
            if (tp.getWidth() == null) tp.setWidth("");
            if (tp.getHeight() == null) tp.setHeight("");
            if (tp.getValue() == null) tp.setValue("");
            if (tp.getIcon_url() == null) tp.setIcon_url("");
            if (tp.getIcon_position() == null) tp.setIcon_position("");
            if (tp.getCollapse() == null) tp.setCollapse("");
     
            ResponseWriter responseWriter = facesContext.getResponseWriter();
            responseWriter.write(   " <table id='table_task_pane_" + ((UITaskPanel)component).getMyid() + "' cellspacing=0 cellpadding=0 real_height='200' style='border-collapse:collapse;width:" + ((UITaskPanel)component).getWidth() + ";height:" + ((UITaskPanel)component).getHeight() + "'> " +
                                        " <tr> " +
                                            " <td class='navigation_principale navigation_principale_titre'> " +
                                                " <table style='width:100%'> " +
                                                    " <tr> ");
     
            if (((UITaskPanel)component).getIcon_position().equals("right")) {
                responseWriter.write(                   " <td class='navigation_principale_titre_texte'>" + ((UITaskPanel)component).getValue() + "</td> " +
                                                        " <td style='width:1px;' align='right'><img src='" + ((UITaskPanel)component).getIcon_url() + "' style='width:16px;'></td> " +
                                                        " <td style='width:1px;' align='right'><img id='img_task_pane_" + ((UITaskPanel)component).getMyid() + "' src='images/reduce.gif' style='cursor:pointer' onclick='task_pane_display(\"" + ((UITaskPanel)component).getMyid() + "\")'></td> ");
            } else {
                responseWriter.write(                   " <td style='width:1px;'><img src='" + ((UITaskPanel)component).getIcon_url() + "' style='width:16px;'></td> " +
                                                        " <td class='navigation_principale_titre_texte'>" + ((UITaskPanel)component).getValue() + "</td> " +
                                                        " <td align='right'><img id='img_task_pane_" + ((UITaskPanel)component).getMyid() + "' src='images/reduce.gif' style='cursor:pointer' onclick='task_pane_display(\"" + ((UITaskPanel)component).getMyid() + "\")'></td> ");
            }
     
     
            responseWriter.write(                   " </tr> " +
                                                " </table> " +
                                            " </td> " +
                                        " </tr> " +
     
                                        " <tr> " +
                                            " <td class='navigation_principale' valign='top'> " +
                                                " <table style='width:100%;height:100%;' id='td_task_pane_" + ((UITaskPanel)component).getMyid() + "' cellpadding='0' cellspacing='0'> " +
                                                    " <tr> " +
                                                        " <td valign='top' style='padding:10 0 0 0;'> ");
    }
    Code du encodeEnd :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    public void encodeEnd(FacesContext facesContext, UIComponent component) throws IOException {
            ResponseWriter responseWriter = facesContext.getResponseWriter();
            responseWriter.write(                       " </td> " +
                                                    " </tr> " +
                                                " </table> " +
                                            " </td> " +
                                        " </tr> " +
                                    " </table> ");
     
    }
    Code de l'ajout dans le UIPanel

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    panel = new UIPanel();
    UITaskPanel tp =  new UITaskPanel();
    tp.setId("task1");
    tp.setValue("Test");
    tp.setIcon_url("images/bk.gif");
    panel.getChildren().add(tp);
    Mon composant ressemeble à ca :
    Images attachées Images attachées  

  9. #9
    Rédacteur
    Avatar de romaintaz
    Homme Profil pro
    Java craftsman
    Inscrit en
    Juillet 2005
    Messages
    3 790
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Java craftsman
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2005
    Messages : 3 790
    Points : 7 275
    Points
    7 275
    Par défaut
    Je ne vois rien de louche dans ton code. Surtout si tu me dis que tes méthodes encodeEnd et encodeBegin sont exécutées...
    Pas d'exception dans ton code ?

    Sinon, un petit test :
    Sur la page, fais afficher la fenêtre de débug : Insère une balise <ui:debug/>, puis tape Ctrl-Shift-D quand celle-ci est affichée.
    Tu devrais pouvoir y trouver l'arbre des composants JSF. Regarde si ton composant UITaskPanel s'y trouve...


    Autre chose, qui n'a rien à voir :
    Dans ta méthode encodeBegin, tu fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UITaskPanel tp = (UITaskPanel) component
    Pourtant, par la suite dans ta méthode, tu refais un appel à ((UITaskPanel) component).xxx au lieu d'utiliser ta variable tp.

    Autre point, tu réalises beaucoup de concaténation de String. Ce serait plus propre et efficace soit de faire des appels plus souvent à ton responseWriter.write(...) ou alors de travailler avec un StringBuffer et sa méthode append(...).

  10. #10
    Membre averti Avatar de danyboy85
    Homme Profil pro
    Développeur Java
    Inscrit en
    Décembre 2005
    Messages
    548
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Décembre 2005
    Messages : 548
    Points : 312
    Points
    312
    Par défaut
    Citation Envoyé par romaintaz Voir le message
    Sinon, un petit test :
    Sur la page, fais afficher la fenêtre de débug : Insère une balise <ui:debug/>, puis tape Ctrl-Shift-D quand celle-ci est affichée.
    Tu devrais pouvoir y trouver l'arbre des composants JSF. Regarde si ton composant UITaskPanel s'y trouve...
    Je ne peux malheureusement pas faire ce test car je n'utilise pas les Facelets.

    J'ai essayé de simplifié le encodeBegin en générant simplement un <input type="text"> sans aucun paramètres mais ca ne marche pas non plus.

    J'au aussi essayé d'intégrer d'autres custom components mais rien n'y fait... j'ai vraiment dû oublier quelque chose dans mon code.

    Pour info voici le code des mes classes UITaskPanel et TaskPanelTag, on sait jamais :

    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
     
    package com.osys.optima.component.taskPanel;
     
    import java.io.IOException;
    import java.util.Iterator;
    import javax.el.ValueExpression;
    import javax.faces.component.UIComponent;
    import javax.faces.component.UIComponentBase;
    import javax.faces.context.FacesContext;
     
    /**
     *
     * @author guerineau
     */
    public class UITaskPanel extends UIComponentBase {
     
        private String myid;
        private String width;
        private String height;
        private String value;
        private String icon_url;
        private String icon_position;
        private String collapse;
     
        public String getFamily() {
            return "myFamily";
        }
     
        public void encodeChildren(FacesContext facesContext) throws IOException {
        	 //System.out.println("encodeChildren");
            for (Iterator iter1 = getChildren().iterator(); iter1.hasNext();) {
                UIComponent component = (UIComponent) iter1.next();
                component.encodeBegin(facesContext);
                component.encodeChildren(facesContext);
                component.encodeEnd(facesContext);
            }
     
        }
     
        public boolean getRendersChildren(){
            return true;
        }
     
        public String getMyid() {
            if (null != this.myid) {
                return this.myid;
            }
            ValueExpression ve = getValueExpression("myid");
            if (ve != null) {
                String s = (String)ve.getValue(getFacesContext().getELContext());
                return (s);
            } else {
                return (this.myid);
            }
        }
     
        public void setMyid(String myid) {
            this.myid = myid;
        }
     
        public String getWidth() {
            return width;
        }
     
        public void setWidth(String width) {
            this.width = width;
        }
     
        public String getHeight() {
            return height;
        }
     
        public void setHeight(String height) {
            this.height = height;
        }
     
        public String getValue() {
            if (null != this.value) {
                return this.value;
            }
            ValueExpression ve = getValueExpression("value");
            if (ve != null) {
                String s = (String)ve.getValue(getFacesContext().getELContext());
                return (s);
            } else {
                return (this.value);
            }
        }
     
        public void setValue(String value) {
            this.value = value;
        }
     
        public String getIcon_url() {
            if (null != this.icon_url) {
                return this.icon_url;
            }
            ValueExpression ve = getValueExpression("icon_url");
            if (ve != null) {
                String s = (String)ve.getValue(getFacesContext().getELContext());
                return (s);
            } else {
                return (this.icon_url);
            }
        }
     
     
        public void setIcon_url(String icon_url) {
            this.icon_url = icon_url;
        }
     
        public String getCollapse() {
            return collapse;
        }
     
        public void setCollapse(String collapse) {
            this.collapse = collapse;
        }
     
        public String getIcon_position() {
            if (null != this.icon_position) {
                return this.icon_position;
            }
            ValueExpression ve = getValueExpression("icon_position");
            if (ve != null) {
                String s = (String)ve.getValue(getFacesContext().getELContext());
                return (s);
            } else {
                return (this.icon_position);
            }
        }
     
        public void setIcon_position(String icon_position) {
            this.icon_position = icon_position;
        }
     
    }
    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
     
    package com.osys.optima.component.taskPanel;
     
    import javax.el.ValueExpression;
    import javax.faces.component.UIComponent;
    import javax.faces.context.FacesContext;
    import javax.faces.webapp.UIComponentELTag;
     
    /**
     *
     * @author guerineau
     */
    public class TaskPanelTag extends UIComponentELTag {
     
        private ValueExpression myid;
        private String width;
        private String height;
        private ValueExpression value;
        private ValueExpression icon_url;
        private ValueExpression icon_position;
        private String collapse;
     
        public TaskPanelTag() {
        }
     
        public String getComponentType() {
            return "myComponent.component.TaskPanel";
        }
     
        public String getRendererType() {
            return "myFamily.renderer.taskPanelRenderer";
        }
     
        public void setProperties(UIComponent component) {
            super.setProperties(component);
     
            if (width!=null) component.getAttributes().put("width", width);
            if (height!=null) component.getAttributes().put("height", height);
            if (collapse!=null) component.getAttributes().put("collapse", collapse);
     
            if (null != myid) {
                if (!myid.isLiteralText()) {
                    component.setValueExpression("myid", myid);
                } else {
                    component.getAttributes().put("myid", myid.getExpressionString());
                }
            }
     
            if (null != value) {
                if (!value.isLiteralText()) {
                    component.setValueExpression("value", value);
                } else {
                    component.getAttributes().put("value", value.getExpressionString());
                }
            }
     
            if (null != icon_url) {
                if (!icon_url.isLiteralText()) {
                    component.setValueExpression("icon_url", icon_url);
                } else {
                    component.getAttributes().put("icon_url", icon_url.getExpressionString());
                }
            }        
     
            if (null != icon_position) {
                if (!icon_position.isLiteralText()) {
                    component.setValueExpression("icon_position", icon_position);
                } else {
                    component.getAttributes().put("icon_position", icon_position.getExpressionString());
                }
            }
        }
     
        public ValueExpression getMyid() {
            return myid;
        }
     
        public void setMyid(ValueExpression myid) {
            this.myid = myid;
        }
     
        public String getWidth() {
            return width;
        }
     
        public void setWidth(String width) {
            this.width = width;
        }
     
        public String getHeight() {
            return height;
        }
     
        public void setHeight(String height) {
            this.height = height;
        }
     
        public ValueExpression getValue() {
            return value;
        }
     
        public void setValue(ValueExpression value) {
            this.value = value;
        }
     
        public ValueExpression getIcon_url() {
            return icon_url;
        }
     
        public void setIcon_url(ValueExpression icon_url) {
            this.icon_url = icon_url;
        }
     
        public ValueExpression getIcon_position() {
            return icon_position;
        }
     
        public void setIcon_position(ValueExpression icon_position) {
            this.icon_position = icon_position;
        }
     
        public String getCollapse() {
            return collapse;
        }
     
        public void setCollapse(String collapse) {
            this.collapse = collapse;
        }
     
    }
    Si ca peut vous aider...

  11. #11
    Rédacteur
    Avatar de romaintaz
    Homme Profil pro
    Java craftsman
    Inscrit en
    Juillet 2005
    Messages
    3 790
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Java craftsman
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2005
    Messages : 3 790
    Points : 7 275
    Points
    7 275
    Par défaut
    C'est assez étrange comme problème.
    Je t'avouerais que je n'ai pas essayé de mon côté d'intégrer mes propres composants directement en Java, donc je ne pourrais pas te confirmer si ça marche ou pas (si j'ai un peu de temps, je pourrais faire l'essai).

    Comment sont déclarés tes composants (les fichiers XML et/ou TLD) ?

    Une chose, qui n'a pas grand chose à voir avec ton problème : Dans ton UITaskPanel, il te faudrait redéfinir les méthodes restoreState et saveState afin de conserver les attributs que tu as défini :

    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
     
        @Override
        public void restoreState(FacesContext context, Object state) {
            Object[] values = (Object[]) (Object[]) state;
            super.restoreState(context, values[0]);
            myid = (String) values[1];
            width = (String) values[2];
            ...
        }
     
        @Override
        public Object saveState(FacesContext context) {
            Object[] values = new Object[8];
            values[0] = super.saveState(context);
            values[1] = myid;
            values[2] = width;
            ...
            return (Object) values;
        }

  12. #12
    Membre averti Avatar de danyboy85
    Homme Profil pro
    Développeur Java
    Inscrit en
    Décembre 2005
    Messages
    548
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Décembre 2005
    Messages : 548
    Points : 312
    Points
    312
    Par défaut
    Voici mon fichier TLD :

    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
     
    <?xml version="1.0" encoding="UTF-8"?>
    <taglib xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
        xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-jsptaglibrary_2_1.xsd"  
        version="2.1">
        <tlib-version>2.1</tlib-version>
        <short-name>ft</short-name>
        <uri>http://facestut.developpez.com/jsf</uri>
        <tag>
            <name>taskPanel</name>
            <tag-class>com.osys.optima.component.taskPanel.TaskPanelTag</tag-class>
            <body-content>JSP</body-content>
            <attribute>
                <name>myid</name>
                <type>java.lang.String</type>
                <deferred-value>
                    <type>java.lang.String</type>
                </deferred-value>
            </attribute>
            <attribute>
                <name>width</name>
                <type>java.lang.String</type>
            </attribute>
            <attribute>
                <name>height</name>
                <type>java.lang.String</type>
            </attribute>
            <attribute>
                <name>icon_url</name>
                <type>java.lang.String</type>
                <deferred-value>
                    <type>java.lang.String</type>
                </deferred-value>
            </attribute>
            <attribute>
                <name>icon_position</name>
                <type>java.lang.String</type>
                <deferred-value>
                    <type>java.lang.String</type>
                </deferred-value>
            </attribute>
            <attribute>
                <name>value</name>
                <type>java.lang.String</type>
                <deferred-value>
                    <type>java.lang.String</type>
                </deferred-value>
            </attribute>
            <attribute>
                <name>collapse</name>
                <type>java.lang.String</type>
            </attribute>
        </tag>
    </taglib>
    Et dans le faces-config.xml :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <renderer>
                <component-family>myFamily</component-family>
                <renderer-type>myFamily.renderer.taskPanelRenderer</renderer-type>
                <renderer-class>com.osys.optima.component.taskPanel.TaskPanelRenderer</renderer-class>
    </renderer>
     
    <component>
            <description>Permet d'afficher un panel que l'on peut étendre ou reduire verticalement</description>
            <component-type>myComponent.component.TaskPanel</component-type>
            <component-class>com.osys.optima.component.taskPanel.UITaskPanel</component-class>
    </component>

Discussions similaires

  1. [PrimeFaces] Backing component ne s'affiche pas
    Par szambaux dans le forum JSF
    Réponses: 2
    Dernier message: 27/10/2012, 13h22
  2. Réponses: 6
    Dernier message: 14/06/2010, 14h47
  3. [XL-2007] ruban créer avec Custom UI ne s'affichant pas
    Par nath-0-0 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 18/03/2010, 15h34
  4. Réponses: 0
    Dernier message: 26/05/2008, 12h20
  5. Réponses: 6
    Dernier message: 13/02/2005, 01h40

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