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 :

problème d'actualisation de la page!


Sujet :

JSF Java

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2008
    Messages : 104
    Par défaut problème d'actualisation de la page!
    Bonjour,

    Alors voila, j'ai créer 2 composants perso: LangMenu et Menu.

    LangMenu sert a changer la langue de l'application, et Menu evidement c'est le menu!!

    Alors voila, petit problème: Lorsque je change la langue, ma page change bien de langue mais pas mon menu ! j'ai l'impression que la page ne se recharge pas completement!
    Pourtant mon composant menu fonctionne niquel, mais lui change de page chaque fois que je clique sur un lien, dc elle se recharge forcement !
    Tandis que le langMenu lui ne change pas de page, il doit en fait la recharger (totalement pr bien faire).

    Voici le decode de mon langMenu:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    public void decode(FacesContext facesContext) {
            String clientId = this.getClientId(facesContext);
            Map parametersMap = facesContext.getExternalContext().getRequestParameterMap();
            Object val = parametersMap.get(clientId);
            if (val != null) {
                Boolean cmd = Boolean.parseBoolean(val.toString());
                if (cmd) {
                    this.action = (String) this.getAttributes().get("action");
                    String redirect = (String) FacesUtil.getValueOfElExpMethod(this.action);
                    facesContext.getApplication().getNavigationHandler().handleNavigation(facesContext, this.action, redirect);
                }
            }
        }
    Le getValueOfElExpMethod(String) en fait donne:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    public static Object getValueOfElExpMethod(String inString) {
            if (inString == null) {
                return null;
            }
            if ((inString.indexOf("#{") == 0) && (inString.endsWith("}") && (inString != null))) {
                FacesContext facesContext = FacesContext.getCurrentInstance();
                return facesContext.getApplication().createMethodBinding(inString, null).invoke(facesContext, null);
            }
            return inString;
        }
    Y aurait-il qqch a faire lorsque qu'il n'y a pas de redirection ? (c-a-d qu'on reste sur la meme page?)

    Merci d'avance

  2. #2
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Par défaut
    pour rester sur la meme page, tu peux retourner une action qui ne se trouve pas dans le outcome définis dans le faces-config ou une action null.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2008
    Messages : 104
    Par défaut
    Oui, c'est bien ce qui est renvoyé!
    La page se recharge, mais pas mes composants!
    Je change par exemple la langue, les messages de ma pages changent, mais pas ceux de mon menu! N'y a-t-il pas qqch à faire dans les composants perso pour dire qu'ils se rechargent?

  4. #4
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Par défaut
    si la page se recharge, le problème vient peut etre des composants du menu, c'est de quel type?
    sinon tu peux faire une redirection sur ta page.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2008
    Messages : 104
    Par défaut
    la redirection sur ma page c'est impossible car ce menu se trouve sur toute les pages!

    Mon composant du menu c'est un composant que j'ai fais moi même !
    J'ai ce problème avec mes composants, ils ne se rechargent pas apparement, appart si on change de page!
    Il doit y avoir un truc que j'ai pas fais qq part, mais ou :\ je cherche

  6. #6
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    on peut voir le code de Menu?

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2008
    Messages : 104
    Par défaut
    Yes,

    Voici ma classe UIMenu

    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
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    public class UIMenu extends UIComponentBase {
     
        /**
         * The style for the ul.
         */
        private String styleClass;
     
        /**
         * The style for the active li.
         */
        private String activeStyleClass;
     
        /**
         * The style for the disabled li.
         */
        private String disabledStyleClass;
     
        /**
         * Level from which the user is allow to display the menu.
         */
        private String levelMin;
     
        /**
         * @see javax.faces.component.UIComponent#getFamily()
         */
        @Override
        public String getFamily() {
            return "menu";
        }
     
        /**
         * @see javax.faces.component.UIComponentBase#encodeChildren(javax.faces.context.FacesContext)
         */
        @SuppressWarnings("unchecked")
        public void encodeChildren(FacesContext facesContext) throws IOException {
            this.levelMin = (String) FacesUtil.getValueOfElExp((String) this.getAttributes().get("levelMin"));
            UserController usrCtrl = (UserController) FacesUtil.getBean("userCtrl");
            if (usrCtrl.getUser().getStatus() > Integer.parseInt(this.levelMin)) {
                for (Iterator iter = this.getChildren().iterator(); iter.hasNext();) {
                    UIComponent comp = (UIComponent) iter.next();
                    comp.encodeBegin(facesContext);
                    comp.encodeChildren(facesContext);
                    comp.encodeEnd(facesContext);
                }
            }
     
        }
     
        /**
         * @see javax.faces.component.UIComponentBase#encodeBegin(javax.faces.context.FacesContext)
         */
        public void encodeBegin(FacesContext facesContext) throws IOException {
            ResponseWriter responseWriter = facesContext.getResponseWriter();
            this.styleClass = (String) FacesUtil.getValueOfElExp((String) this.getAttributes().get("styleClass"));
            this.levelMin = (String) FacesUtil.getValueOfElExp((String) this.getAttributes().get("levelMin"));
            UserController usrCtrl = (UserController) FacesUtil.getBean("userCtrl");
            if (usrCtrl.getUser().getStatus() > Integer.parseInt(this.levelMin)) {
                responseWriter.startElement("ul", this);
                if (this.styleClass != null) {
                    responseWriter.writeAttribute("class", this.styleClass, "class");
                }
     
            }
     
        }
     
     
        /**
         * @see javax.faces.component.UIComponentBase#encodeEnd(javax.faces.context.FacesContext)
         */
        public void encodeEnd(FacesContext facesContext) throws IOException {
            ResponseWriter responseWriter = facesContext.getResponseWriter();
            this.levelMin = (String) FacesUtil.getValueOfElExp((String) this.getAttributes().get("levelMin"));
            UserController usrCtrl = (UserController) FacesUtil.getBean("userCtrl");
            if (usrCtrl.getUser().getStatus() > Integer.parseInt(this.levelMin)) {
                responseWriter.endElement("ul");
            }
     
        }
     
        /**
         * @see javax.faces.component.UIComponentBase#saveState(javax.faces.context.FacesContext)
         */
        public Object saveState(FacesContext context) {
            Object[] values = new Object[5];
            values[0] = super.saveState(context);
            values[1] = this.styleClass;
            values[2] = this.levelMin;
            values[3] = this.activeStyleClass;
            values[4] = this.disabledStyleClass;
            return values;
        }
     
        /**
         * @see javax.faces.component.UIComponentBase#restoreState(javax.faces.context.FacesContext, java.lang.Object)
         */
        public void restoreState(FacesContext context, Object state) {
            Object[] values = (Object[]) state;
            super.restoreState(context, values[0]);
            this.styleClass = (String) values[1];
            this.levelMin = (String) values[2];
            this.activeStyleClass = (String) values[3];
            this.disabledStyleClass = (String) values[4];
        }
     
        /**
         * @see javax.faces.component.UIComponentBase#getRendersChildren()
         */
        public boolean getRendersChildren() {
            return true;
        }
     
     
        /**
         * Getter.
         * 
         * @return the activeStyleClass
         */
        public String getActiveStyleClass() {
            return this.activeStyleClass;
        }
     
     
        /**
         * Setter.
         * 
         * @param activeStyleClass the activeStyleClass to set
         */
        public void setActiveStyleClass(String activeStyleClass) {
            this.activeStyleClass = activeStyleClass;
        }
     
     
        /**
         * Getter.
         * 
         * @return the styleClass
         */
        public String getStyleClass() {
            return styleClass;
        }
     
     
        /**
         * Setter.
         * 
         * @param styleClass the styleClass to set
         */
        public void setStyleClass(String styleClass) {
            this.styleClass = styleClass;
        }
     
     
        /**
         * Getter.
         * 
         * @return the levelMin
         */
        public String getLevelMin() {
            return this.levelMin;
        }
     
     
        /**
         * Setter.
         * 
         * @param levelMin the levelMin to set
         */
        public void setLevelMin(String levelMin) {
            this.levelMin = levelMin;
        }
     
     
        /**
         * Getter.
         * 
         * @return the disabledStyleClass
         */
        public String getDisabledStyleClass() {
            return this.disabledStyleClass;
        }
     
     
        /**
         * Setter.
         * 
         * @param disabledStyleClass the disabledStyleClass to set
         */
        public void setDisabledStyleClass(String disabledStyleClass) {
            this.disabledStyleClass = disabledStyleClass;
        }
    }
    Ma classe MenuTag:

    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
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    public class MenuTag extends UIComponentTag {
     
        /**
         * The style for the ul.
         */
        private String styleClass;
     
        /**
         * The style for the active li.
         */
        private String activeStyleClass;
     
        /**
         * The style for the disabled li.
         */
        private String disabledStyleClass;
     
        /**
         * Level from which the user is allow to display the menu.
         */
        private String levelMin;
     
     
        /**
         * Not used.
         * 
         * @return null
         */
        public String getRendererType() {
            return null;
        }
     
        /**
         * Return the component type.
         * 
         * @return the component type.
         */
        public String getComponentType() {
            return "Menu";
        }
     
        /**
         * Used to set properties of the component.
         * 
         * @param component
         */
        @SuppressWarnings("unchecked")
        public void setProperties(UIComponent component) {
            super.setProperties(component);
            if (this.getActiveStyleClass() != null) {
                component.getAttributes().put("activeStyleClass", this.getActiveStyleClass());
            }
            if (this.getStyleClass() != null) {
                component.getAttributes().put("styleClass", this.getStyleClass());
            }
            if (this.getLevelMin() != null) {
                component.getAttributes().put("levelMin", this.getLevelMin());
            }
            if (this.getDisabledStyleClass() != null) {
                component.getAttributes().put("disabledStyleClass", this.getDisabledStyleClass());
            }
        }
     
        /**
         * @see javax.faces.webapp.UIComponentTag#doEndTag()
         */
        public int doEndTag() throws JspException {
            if (this.getCreated()) {
                UIMenu uiMenu = (UIMenu) this.getComponentInstance();
                UIComponent uiComponent = uiMenu.getParent();
                if (!(uiComponent instanceof UIForm)) {
                    throw new JspException("The parent of the Menu component is not a form!");
                }
            }
            return super.doEndTag();
        }
     
        /**
         * @see javax.faces.webapp.UIComponentTag#release()
         */
        public void release() {
            super.release();
            this.activeStyleClass = null;
            this.disabledStyleClass = null;
            this.levelMin = null;
            this.styleClass = null;
        }
     
     
        /**
         * Getter.
         * 
         * @return the styleClass
         */
        public String getStyleClass() {
            return this.styleClass;
        }
     
     
        /**
         * Setter.
         * 
         * @param styleClass the styleClass to set
         */
        public void setStyleClass(String styleClass) {
            this.styleClass = styleClass;
        }
     
     
        /**
         * Getter.
         * 
         * @return the activeStyleClass
         */
        public String getActiveStyleClass() {
            return this.activeStyleClass;
        }
     
     
        /**
         * Setter.
         * 
         * @param activeStyleClass the activeStyleClass to set
         */
        public void setActiveStyleClass(String activeStyleClass) {
            this.activeStyleClass = activeStyleClass;
        }
     
     
        /**
         * Getter.
         * 
         * @return the levelMin
         */
        public String getLevelMin() {
            return this.levelMin;
        }
     
     
        /**
         * Setter.
         * 
         * @param levelMin the levelMin to set
         */
        public void setLevelMin(String levelMin) {
            this.levelMin = levelMin;
        }
     
     
        /**
         * Getter.
         * 
         * @return the disabledStyleClass
         */
        public String getDisabledStyleClass() {
            return this.disabledStyleClass;
        }
     
     
        /**
         * Setter.
         * 
         * @param disabledStyleClass the disabledStyleClass to set
         */
        public void setDisabledStyleClass(String disabledStyleClass) {
            this.disabledStyleClass = disabledStyleClass;
        }
    La classe UIMenuItem

    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
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
    270
    271
    272
    273
    274
    275
    276
    277
    278
    public class UIMenuItem extends UIComponentBase {
     
        /**
         * Level minimum to access.
         */
        private String levelMin;
     
        /**
         * ID.
         */
        private String id;
     
        /**
         * StyleClass.
         */
        private String styleClass;
     
        /**
         * Value;
         */
        private String value;
     
        /**
         * Action.
         */
        private String action;
     
        /**
         * @see javax.faces.component.UIComponent#getFamily()
         */
        @Override
        public String getFamily() {
            return "menuItem";
        }
     
        /**
         * @see javax.faces.component.UIComponentBase#encodeEnd(javax.faces.context.FacesContext)
         */
        public void encodeEnd(FacesContext facesContext) throws IOException {
            ResponseWriter responseWriter = facesContext.getResponseWriter();
            String clientId = this.getClientId(facesContext);
            this.levelMin = (String) FacesUtil.getValueOfElExp((String) this.getAttributes().get("levelMin"));
            this.id = (String) FacesUtil.getValueOfElExp((String) this.getAttributes().get("id"));
            this.styleClass = (String) FacesUtil.getValueOfElExp((String) this.getAttributes().get("styleClass"));
            this.value = (String) FacesUtil.getValueOfElExp((String) this.getAttributes().get("value"));
            String active = (String) FacesUtil.getValueOfElExp((String) this.getParent().getAttributes().get("activeStyleClass"));
            if (active != null) {
                if ((this.styleClass != null) && (isCurrentPage(this.id))) {
                    this.styleClass = this.styleClass + " " + active;
                } else if ((this.styleClass == null) && (isCurrentPage(this.id))) {
                    this.styleClass = active;
                }
            }
            UserController usrCtrl = (UserController) FacesUtil.getBean("userCtrl");
            if (usrCtrl.getUser().getStatus() >= Integer.parseInt(this.levelMin)) {
                responseWriter.startElement("li", this);
                if (this.styleClass != null) {
                    responseWriter.writeAttribute("class", this.styleClass, "class");
                }
                responseWriter.startElement("a", this);
                responseWriter.writeAttribute("href", "javascript:document.forms['" + this.getParent().getParent().getClientId(facesContext) + "'].submit();", "href");
                responseWriter.writeAttribute("onclick", "document.getElementById('" + clientId + "').value = 'true';return true;", "onclick");
                if (this.value != null) {
                    responseWriter.write(this.value);
                }
                responseWriter.endElement("a");
            } else {
                String disabled = (String) FacesUtil.getValueOfElExp((String) this.getParent().getAttributes().get("disabledStyleClass"));
                responseWriter.startElement("li", this);
                if (disabled != null) {
                    responseWriter.writeAttribute("class", disabled, "class");
                }
                responseWriter.startElement("a", this);
                responseWriter.writeAttribute("href", "#", "href");
                if (this.value != null) {
                    responseWriter.write(this.value);
                }
                responseWriter.endElement("a");
            }
            responseWriter.endElement("li");
     
            // Input Hidden
            responseWriter.startElement("input", this);
            responseWriter.writeAttribute("id", clientId, "id");
            responseWriter.writeAttribute("name", clientId, "name");
            responseWriter.writeAttribute("type", "hidden", "type");
            responseWriter.writeAttribute("value", "false", "value");
            responseWriter.endElement("input");
        }
     
        /**
         * @see javax.faces.component.UIComponentBase#saveState(javax.faces.context.FacesContext)
         */
        public Object saveState(FacesContext context) {
            Object[] values = new Object[6];
            values[0] = super.saveState(context);
            values[1] = this.levelMin;
            values[2] = this.id;
            values[3] = this.styleClass;
            values[4] = this.value;
            values[5] = this.action;
            return values;
        }
     
        /**
         * @see javax.faces.component.UIComponentBase#restoreState(javax.faces.context.FacesContext, java.lang.Object)
         */
        public void restoreState(FacesContext context, Object state) {
            Object[] values = (Object[]) state;
            super.restoreState(context, values[0]);
            this.levelMin = (String) values[1];
            this.id = (String) values[2];
            this.styleClass = (String) values[3];
            this.value = (String) values[4];
            this.action = (String) values[5];
        }
     
        /**
         * @see javax.faces.component.UIComponentBase#decode(javax.faces.context.FacesContext)
         */
        @SuppressWarnings("unchecked")
        public void decode(FacesContext facesContext) {
            String clientId = this.getClientId(facesContext);
            Map parametersMap = facesContext.getExternalContext().getRequestParameterMap();
            Object val = parametersMap.get(clientId);
            if (val != null) {
                Boolean cmd = Boolean.parseBoolean(val.toString());
                if (cmd) {
                    this.action = (String) this.getAttributes().get("action");
                    String redirect = (String) FacesUtil.getValueOfElExpMethod(this.action);
                    facesContext.getApplication().getNavigationHandler().handleNavigation(facesContext, this.action, redirect);
                }
            }
        }
     
        /**
         * @see javax.faces.component.UIComponentBase#getRendersChildren()
         */
        public boolean getRendersChildren() {
            return true;
        }
     
     
        /**
         * Getter.
         * 
         * @return the levelMin
         */
        public String getLevelMin() {
            return this.levelMin;
        }
     
     
        /**
         * Setter.
         * 
         * @param levelMin the levelMin to set
         */
        public void setLevelMin(String levelMin) {
            this.levelMin = levelMin;
        }
     
     
        /**
         * Getter.
         * 
         * @return the id
         */
        public String getId() {
            return this.id;
        }
     
     
        /**
         * Setter.
         * 
         * @param id the id to set
         */
        public void setId(String id) {
            this.id = id;
        }
     
     
        /**
         * Getter.
         * 
         * @return the styleClass
         */
        public String getStyleClass() {
            return this.styleClass;
        }
     
     
        /**
         * Setter.
         * 
         * @param styleClass the styleClass to set
         */
        public void setStyleClass(String styleClass) {
            this.styleClass = styleClass;
        }
     
     
        /**
         * Getter.
         * 
         * @return the value
         */
        public String getValue() {
            return this.value;
        }
     
     
        /**
         * Setter.
         * 
         * @param value the value to set
         */
        public void setValue(String value) {
            this.value = value;
        }
     
     
        /**
         * Getter.
         * 
         * @return the action
         */
        public String getAction() {
            return this.action;
        }
     
     
        /**
         * Setter.
         * 
         * @param action the action to set
         */
        public void setAction(String action) {
            this.action = action;
        }
     
        /**
         * Check if this item is the current page.
         * 
         * @param inId
         * @return true if this item is the current page
         */
        private boolean isCurrentPage(String inId) {
            if (inId.compareToIgnoreCase("home") == 0) {
                if (MenuUtil.isHome()) {
                    return true;
                }
            } else if (inId.compareToIgnoreCase("report") == 0) {
                if (MenuUtil.isReport()) {
                    return true;
                }
            } else if (inId.compareToIgnoreCase("task") == 0) {
                if (MenuUtil.isTask()) {
                    return true;
                }
            } else if (inId.compareToIgnoreCase("customer") == 0) {
                if (MenuUtil.isCustomer()) {
                    return true;
                }
            } else if (inId.compareToIgnoreCase("user") == 0) {
                if (MenuUtil.isUser()) {
                    return true;
                }
            } else if (inId.compareToIgnoreCase("history") == 0) {
                if (MenuUtil.isHistory()) {
                    return true;
                }
            }
            return false;
        }
     
    }
    la classe MenuItemTag

    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
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    public class MenuItemTag extends UIComponentTag {
     
        /**
         * Level minimum to access.
         */
        private String levelMin;
     
        /**
         * ID.
         */
        private String id;
     
        /**
         * Style Class.
         */
        private String styleClass;
     
        /**
         * Value.
         */
        private String value;
     
        /**
         * Action.
         */
        private String action;
     
        /**
         * @return x
         */
        public String getRendererType() {
            return null;
        }
     
        /**
         * @return xw
         */
        public String getComponentType() {
            return "MenuItem";
        }
     
        /**
         * @param component
         */
        @SuppressWarnings("unchecked")
        public void setProperties(UIComponent component) {
            super.setProperties(component);
            if (this.getLevelMin() != null) {
                component.getAttributes().put("levelMin", this.getLevelMin());
            }
            if (this.getAction() != null) {
                component.getAttributes().put("action", this.getAction());
            }
            if (this.getId() != null) {
                component.getAttributes().put("id", this.getId());
            }
            if (this.getStyleClass() != null) {
                component.getAttributes().put("styleClass", this.getStyleClass());
            }
            if (this.getValue() != null) {
                component.getAttributes().put("value", this.getValue());
            }
        }
     
        /**
         * @see javax.faces.webapp.UIComponentTag#doEndTag()
         */
        public int doEndTag() throws JspException {
            if (this.getCreated()) {
                UIMenuItem uiMenuItem = (UIMenuItem) this.getComponentInstance();
                UIComponent uiComponent = uiMenuItem.getParent();
                if (!(uiComponent instanceof UIMenu)) {
                    throw new JspException("The parent of the MenuItem component is not a Menu!");
                }
            }
            return super.doEndTag();
        }
     
        /**
         * @see javax.faces.webapp.UIComponentTag#release()
         */
        public void release() {
            super.release();
            this.value = null;
            this.action = null;
            this.id = null;
            this.levelMin = null;
            this.styleClass = null;
        }
     
     
        /**
         * Getter.
         * 
         * @return the levelMin
         */
        public String getLevelMin() {
            return this.levelMin;
        }
     
     
        /**
         * Setter.
         * 
         * @param levelMin the levelMin to set
         */
        public void setLevelMin(String levelMin) {
            this.levelMin = levelMin;
        }
     
     
        /**
         * Getter.
         * 
         * @return the id
         */
        public String getId() {
            return this.id;
        }
     
     
        /**
         * Setter.
         * 
         * @param id the id to set
         */
        public void setId(String id) {
            this.id = id;
        }
     
     
        /**
         * Getter.
         * 
         * @return the styleClass
         */
        public String getStyleClass() {
            return this.styleClass;
        }
     
     
        /**
         * Setter.
         * 
         * @param styleClass the styleClass to set
         */
        public void setStyleClass(String styleClass) {
            this.styleClass = styleClass;
        }
     
     
        /**
         * Getter.
         * 
         * @return the value
         */
        public String getValue() {
            return this.value;
        }
     
     
        /**
         * Setter.
         * 
         * @param value the value to set
         */
        public void setValue(String value) {
            this.value = value;
        }
     
     
        /**
         * Getter.
         * 
         * @return the action
         */
        public String getAction() {
            return this.action;
        }
     
     
        /**
         * Setter.
         * 
         * @param action the action to set
         */
        public void setAction(String action) {
            this.action = action;
        }
     
     
    }

    Voila, en fait j'utilise menu avec des sous composants menuitem!

  8. #8
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    j'ai du mal à voir, où la langue intervient-elle dans tes classes? Je ne vois aucune référénce à la langue.

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2008
    Messages : 104
    Par défaut
    Ca c'est mon menu de navigation, j'ai aussi un menu pour changer la langue!
    Je vais aussi vous mettre le code, mais le probleme est le meme pour les 2, lorsque que je change la langue, il ne recharge pas le composant:

    UILangMenu
    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
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    public class UILangMenu extends UIComponentBase {
     
        /**
         * Style for first div.
         */
        private String div1StyleClass;
     
        /**
         * Style for second div.
         */
        private String div2StyleClass;
     
        /**
         * Style for ul.
         */
        private String ulStyleClass;
     
        /**
         * Style for active li.
         */
        private String activeStyleClass;
     
        /**
         * @see javax.faces.component.UIComponent#getFamily()
         */
        @Override
        public String getFamily() {
            return "LangMenu";
        }
     
        /**
         * @see javax.faces.component.UIComponentBase#encodeChildren(javax.faces.context.FacesContext)
         */
        @SuppressWarnings("unchecked")
        public void encodeChildren(FacesContext facesContext) throws IOException {
     
            for (Iterator iter = this.getChildren().iterator(); iter.hasNext();) {
                UIComponent comp = (UIComponent) iter.next();
                comp.encodeBegin(facesContext);
                comp.encodeChildren(facesContext);
                comp.encodeEnd(facesContext);
            }
        }
     
        /**
         * @see javax.faces.component.UIComponentBase#encodeBegin(javax.faces.context.FacesContext)
         */
        public void encodeBegin(FacesContext facesContext) throws IOException {
            ResponseWriter responseWriter = facesContext.getResponseWriter();
            this.div1StyleClass = (String) FacesUtil.getValueOfElExp((String) this.getAttributes().get("div1StyleClass"));
            this.div2StyleClass = (String) FacesUtil.getValueOfElExp((String) this.getAttributes().get("div2StyleClass"));
            this.ulStyleClass = (String) FacesUtil.getValueOfElExp((String) this.getAttributes().get("ulStyleClass"));
            responseWriter.startElement("div", this);
            if (this.div1StyleClass != null) {
                responseWriter.writeAttribute("class", this.div1StyleClass, "class");         
            }
            responseWriter.writeAttribute("id", "metaNav", "id");
            responseWriter.startElement("div", this);
            if (this.div2StyleClass != null) {
                responseWriter.writeAttribute("class", this.div2StyleClass, "class");    
            }
            responseWriter.startElement("ul", this);
            if (this.ulStyleClass != null) {
                responseWriter.writeAttribute("class", this.ulStyleClass, "class");       
            }
        }
     
     
        /**
         * @see javax.faces.component.UIComponentBase#encodeEnd(javax.faces.context.FacesContext)
         */
        public void encodeEnd(FacesContext facesContext) throws IOException {
            ResponseWriter responseWriter = facesContext.getResponseWriter();
            responseWriter.endElement("ul");
            responseWriter.endElement("div");
            responseWriter.endElement("div");
        }
     
        /**
         * @see javax.faces.component.UIComponentBase#saveState(javax.faces.context.FacesContext)
         */
        public Object saveState(FacesContext context) {
            Object[] values = new Object[5];
            values[0] = super.saveState(context);
            values[1] = this.div1StyleClass;
            values[2] = this.div2StyleClass;
            values[3] = this.ulStyleClass;
            values[4] = this.activeStyleClass;
            return values;
        }
     
        /**
         * @see javax.faces.component.UIComponentBase#restoreState(javax.faces.context.FacesContext, java.lang.Object)
         */
        public void restoreState(FacesContext context, Object state) {
            Object[] values = (Object[]) state;
            super.restoreState(context, values[0]);
            this.div1StyleClass = (String) values[1];
            this.div2StyleClass = (String) values[2];
            this.ulStyleClass = (String) values[3];
            this.activeStyleClass = (String) values[4];
        }
     
        /**
         * @see javax.faces.component.UIComponentBase#getRendersChildren()
         */
        public boolean getRendersChildren() {
            return true;
        }
     
     
        /**
         * Getter.
         * 
         * @return the div1StyleClass
         */
        public String getDiv1StyleClass() {
            return this.div1StyleClass;
        }
     
     
        /**
         * Setter.
         * 
         * @param div1StyleClass the div1StyleClass to set
         */
        public void setDiv1StyleClass(String div1StyleClass) {
            this.div1StyleClass = div1StyleClass;
        }
     
     
        /**
         * Getter.
         * 
         * @return the div2StyleClass
         */
        public String getDiv2StyleClass() {
            return this.div2StyleClass;
        }
     
     
        /**
         * Setter.
         * 
         * @param div2StyleClass the div2StyleClass to set
         */
        public void setDiv2StyleClass(String div2StyleClass) {
            this.div2StyleClass = div2StyleClass;
        }
     
     
        /**
         * Getter.
         * 
         * @return the ulStyleClass
         */
        public String getUlStyleClass() {
            return this.ulStyleClass;
        }
     
     
        /**
         * Setter.
         * 
         * @param ulStyleClass the ulStyleClass to set
         */
        public void setUlStyleClass(String ulStyleClass) {
            this.ulStyleClass = ulStyleClass;
        }
     
     
        /**
         * Getter.
         * 
         * @return the activeStyleClass
         */
        public String getActiveStyleClass() {
            return this.activeStyleClass;
        }
     
     
        /**
         * Setter.
         * 
         * @param activeStyleClass the activeStyleClass to set
         */
        public void setActiveStyleClass(String activeStyleClass) {
            this.activeStyleClass = activeStyleClass;
        }
    }
    UILangMenuItem

    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
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    public class UILangMenuItem extends UIComponentBase {
     
        /**
         * Action.
         */
        private String action;
     
        /**
         * Value to display.
         */
        private String value;
     
        /**
         * Lang.
         */
        private String lang;
     
        /**
         * Title.
         */
        private String title;
     
        /**
         * Style class.
         */
        private String styleClass;
     
        /**
         * @see javax.faces.component.UIComponent#getFamily()
         */
        @Override
        public String getFamily() {
            return "langMenuItem";
        }
     
        /**
         * @see javax.faces.component.UIComponentBase#encodeEnd(javax.faces.context.FacesContext)
         */
        public void encodeEnd(FacesContext facesContext) throws IOException {
            ResponseWriter responseWriter = facesContext.getResponseWriter();
            String clientId = this.getClientId(facesContext);
            this.styleClass = (String) FacesUtil.getValueOfElExp((String) this.getAttributes().get("styleClass"));
            String active = (String) FacesUtil.getValueOfElExp((String) this.getParent().getAttributes().get("activeStyleClass"));
            this.lang = (String) FacesUtil.getValueOfElExp((String) this.getAttributes().get("lang"));
            this.value = (String) FacesUtil.getValueOfElExp((String) this.getAttributes().get("value"));
            this.title = (String) FacesUtil.getValueOfElExp((String) this.getAttributes().get("title"));
            responseWriter.startElement("li", this);
            if (active != null) {
                if ((this.styleClass != null) && (FacesUtil.isLang(this.lang))) {
                    this.styleClass = this.styleClass + " " + active;
                } else if ((this.styleClass == null) && (FacesUtil.isLang(this.lang))) {
                    this.styleClass = active;
                }
            }
            if (this.styleClass != null) {
                responseWriter.writeAttribute("class", this.styleClass, "class");
            }
     
            responseWriter.startElement("a", this);
            responseWriter.writeAttribute("href", "javascript:document.forms['" + this.getParent().getParent().getClientId(facesContext) + "'].submit();", "href");
            responseWriter.writeAttribute("onclick", "document.getElementById('" + clientId + "').value = 'true';return true;", "onclick");
            responseWriter.writeAttribute("lang", this.lang, "lang");
            responseWriter.writeAttribute("hreflang", this.lang, "hreflang");
            if (this.title != null) {
                responseWriter.writeAttribute("title", this.title, "title");
            }
            if (this.value != null) {
                responseWriter.write(this.value);
            }
            responseWriter.endElement("a");
            responseWriter.endElement("li");
     
            // Input Hidden
            responseWriter.startElement("input", this);
            responseWriter.writeAttribute("id", clientId, "id");
            responseWriter.writeAttribute("name", clientId, "name");
            responseWriter.writeAttribute("type", "hidden", "type");
            responseWriter.writeAttribute("value", "false", "value");
            responseWriter.endElement("input");
        }
     
        /**
         * @see javax.faces.component.UIComponentBase#getRendersChildren()
         */
        public boolean getRendersChildren() {
            return true;
        }
     
        /**
         * @see javax.faces.component.UIComponentBase#saveState(javax.faces.context.FacesContext)
         */
        public Object saveState(FacesContext context) {
            Object[] values = new Object[6];
            values[0] = super.saveState(context);
            values[1] = this.action;
            values[2] = this.value;
            values[3] = this.lang;
            values[4] = this.title;
            values[5] = this.styleClass;
            return values;
        }
     
        /**
         * @see javax.faces.component.UIComponentBase#restoreState(javax.faces.context.FacesContext, java.lang.Object)
         */
        public void restoreState(FacesContext context, Object state) {
            Object[] values = (Object[]) state;
            super.restoreState(context, values[0]);
            this.action = (String) values[1];
            this.value = (String) values[2];
            this.lang = (String) values[3];
            this.title = (String) values[4];
            this.styleClass = (String) values[5];
        }
     
        /**
         * @see javax.faces.component.UIComponentBase#decode(javax.faces.context.FacesContext)
         */
        @SuppressWarnings("unchecked")
        public void decode(FacesContext facesContext) {
            String clientId = this.getClientId(facesContext);
            Map parametersMap = facesContext.getExternalContext().getRequestParameterMap();
            Object val = parametersMap.get(clientId);
            if (val != null) {
                Boolean cmd = Boolean.parseBoolean(val.toString());
                if (cmd) {
                    this.action = (String) this.getAttributes().get("action");
                    String redirect = (String) FacesUtil.getValueOfElExpMethod(this.action);
                    facesContext.getApplication().getNavigationHandler().handleNavigation(facesContext, null, redirect);
                }
            }
        }
     
     
        /**
         * Getter.
         * 
         * @return the action
         */
        public String getAction() {
            return this.action;
        }
     
     
        /**
         * Setter.
         * 
         * @param action the action to set
         */
        public void setAction(String action) {
            this.action = action;
        }
     
        /**
         * Getter.
         * 
         * @return the value
         */
        public String getValue() {
            return this.value;
        }
     
     
        /**
         * Setter.
         * 
         * @param value the value to set
         */
        public void setValue(String value) {
            this.value = value;
        }
     
     
        /**
         * Getter.
         * 
         * @return the lang
         */
        public String getLang() {
            return lang;
        }
     
     
        /**
         * Setter.
         * 
         * @param lang the lang to set
         */
        public void setLang(String lang) {
            this.lang = lang;
        }
     
     
        /**
         * Getter.
         * 
         * @return the title
         */
        public String getTitle() {
            return this.title;
        }
     
     
        /**
         * Setter.
         * 
         * @param title the title to set
         */
        public void setTitle(String title) {
            this.title = title;
        }
     
     
        /**
         * Getter.
         * 
         * @return the styleClass
         */
        public String getStyleClass() {
            return this.styleClass;
        }
     
     
        /**
         * Setter.
         * 
         * @param styleClass the styleClass to set
         */
        public void setStyleClass(String styleClass) {
            this.styleClass = styleClass;
        }
     
    }
    LangMenuTag

    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
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    public class LangMenuTag extends UIComponentTag {
     
        /**
         * Style for first div.
         */
        private String div1StyleClass;
     
        /**
         * Style for second div.
         */
        private String div2StyleClass;
     
        /**
         * Style for ul.
         */
        private String ulStyleClass;
     
        /**
         * Style for active li.
         */
        private String activeStyleClass;
     
        /**
         * Renderer not used.
         * 
         * @return null
         */
        public String getRendererType() {
            return null;
        }
     
        /**
         * Return the type of the component.
         * 
         * @return the type of the component.
         */
        public String getComponentType() {
            return "LangMenu";
        }
     
        /**
         * Used to set properties of the component.
         * 
         * @param component
         */
        @SuppressWarnings("unchecked")
        public void setProperties(UIComponent component) {
            super.setProperties(component);
            if (this.getActiveStyleClass() != null) {
                component.getAttributes().put("activeStyleClass", this.getActiveStyleClass());
            }
            if (this.getDiv1StyleClass() != null) {
                component.getAttributes().put("div1StyleClass", this.getDiv1StyleClass());
            }
            if (this.getDiv2StyleClass() != null) {
                component.getAttributes().put("div2StyleClass", this.getDiv2StyleClass());
            }
            if (this.getUlStyleClass() != null) {
                component.getAttributes().put("ulStyleClass", this.getUlStyleClass());
            }
        }
     
        /**
         * @see javax.faces.webapp.UIComponentTag#doEndTag()
         */
        public int doEndTag() throws JspException {
            if (this.getCreated()) {
                UILangMenu uiLangMenu = (UILangMenu) this.getComponentInstance();
                UIComponent uiComponent = uiLangMenu.getParent();
                if (!(uiComponent instanceof UIForm)) {
                    throw new JspException("The parent of the langMenu component is not a form!");
                }
            }
            return super.doEndTag();
        }
     
        /**
         * @see javax.faces.webapp.UIComponentTag#release()
         */
        public void release() {
            super.release();
            this.activeStyleClass = null;
            this.div1StyleClass = null;
            this.div2StyleClass = null;
            this.ulStyleClass = null;
        }
     
     
        /**
         * Getter.
         * 
         * @return the div1StyleClass
         */
        public String getDiv1StyleClass() {
            return this.div1StyleClass;
        }
     
     
        /**
         * Setter.
         * 
         * @param div1StyleClass the div1StyleClass to set
         */
        public void setDiv1StyleClass(String div1StyleClass) {
            this.div1StyleClass = div1StyleClass;
        }
     
     
        /**
         * Getter.
         * 
         * @return the div2StyleClass
         */
        public String getDiv2StyleClass() {
            return this.div2StyleClass;
        }
     
     
        /**
         * Setter.
         * 
         * @param div2StyleClass the div2StyleClass to set
         */
        public void setDiv2StyleClass(String div2StyleClass) {
            this.div2StyleClass = div2StyleClass;
        }
     
     
        /**
         * Getter.
         * 
         * @return the ulStyleClass
         */
        public String getUlStyleClass() {
            return this.ulStyleClass;
        }
     
     
        /**
         * Setter.
         * 
         * @param ulStyleClass the ulStyleClass to set
         */
        public void setUlStyleClass(String ulStyleClass) {
            this.ulStyleClass = ulStyleClass;
        }
     
     
        /**
         * Getter.
         * 
         * @return the activeStyleClass
         */
        public String getActiveStyleClass() {
            return this.activeStyleClass;
        }
     
     
        /**
         * Setter.
         * 
         * @param activeStyleClass the activeStyleClass to set
         */
        public void setActiveStyleClass(String activeStyleClass) {
            this.activeStyleClass = activeStyleClass;
        }
     
    }
    LangMenuItemTag

    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
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    public class LangMenuItemTag extends UIComponentTag {
     
        /**
         * Action attribute.
         */
        private String action;
     
        /**
         * Value to display.
         */
        private String value;
     
        /**
         * Lang attribute (used for lang and hreflang).
         */
        private String lang;
     
        /**
         * Title attribute.
         */
        private String title;
     
        /**
         * Style attribute.
         */
        private String styleClass;
     
        /**
         * Not used.
         * 
         * @return null
         */
        public String getRendererType() {
            return null;
        }
     
        /**
         * Return the component type.
         * 
         * @return the component type
         */
        public String getComponentType() {
            return "LangMenuItem";
        }
     
        /**
         * Used to set properties of the component.
         * 
         * @param component
         */
        @SuppressWarnings("unchecked")
        public void setProperties(UIComponent component) {
            super.setProperties(component);
            if (this.getAction() != null) {
                component.getAttributes().put("action", this.getAction());
            }
            if (this.getValue() != null) {
                component.getAttributes().put("value", this.getValue());
            }
            if (this.getLang() != null) {
                component.getAttributes().put("lang", this.getLang());
            }
            if (this.getTitle() != null) {
                component.getAttributes().put("title", this.getTitle());
            }
            if (this.getStyleClass() != null) {
                component.getAttributes().put("styleClass", this.getStyleClass());
            }
        }
     
        /**
         * @see javax.faces.webapp.UIComponentTag#doEndTag()
         */
        public int doEndTag() throws JspException {
            if (this.getCreated()) {
                UILangMenuItem uiLangMenuItem = (UILangMenuItem) this.getComponentInstance();
                UIComponent uiComponent = uiLangMenuItem.getParent();
                if (!(uiComponent instanceof UILangMenu)) {
                    throw new JspException("The parent of the langMenuItem component is not a langMenu!");
                }
            }
            return super.doEndTag();
        }
     
        /**
         * @see javax.faces.webapp.UIComponentTag#release()
         */
        public void release() {
            super.release();
            this.value = null;
            this.action = null;
            this.lang = null;
            this.title = null;
            this.styleClass = null;
        }
     
     
        /**
         * Getter.
         * 
         * @return the action
         */
        public String getAction() {
            return this.action;
        }
     
     
        /**
         * Setter.
         * 
         * @param action the action to set
         */
        public void setAction(String action) {
            this.action = action;
        }
     
     
        /**
         * Getter.
         * 
         * @return the value
         */
        public String getValue() {
            return this.value;
        }
     
     
        /**
         * Setter.
         * 
         * @param value the value to set
         */
        public void setValue(String value) {
            this.value = value;
        }
     
     
        /**
         * Getter.
         * 
         * @return the lang
         */
        public String getLang() {
            return this.lang;
        }
     
     
        /**
         * Setter.
         * 
         * @param lang the lang to set
         */
        public void setLang(String lang) {
            this.lang = lang;
        }
     
     
        /**
         * Getter.
         * 
         * @return the title
         */
        public String getTitle() {
            return this.title;
        }
     
     
        /**
         * Setter.
         * 
         * @param title the title to set
         */
        public void setTitle(String title) {
            this.title = title;
        }
     
     
        /**
         * Getter.
         * 
         * @return the styleClass
         */
        public String getStyleClass() {
            return this.styleClass;
        }
     
     
        /**
         * Setter.
         * 
         * @param styleClass the styleClass to set
         */
        public void setStyleClass(String styleClass) {
            this.styleClass = styleClass;
        }
     
    }
    Voila

  10. #10
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Pour que les chose soi claire, dans tout tes composants présenté là, lesquel ne se dessinnent pas dans la bonne langue? Je n'arrive à à faire la différence entre ceux pour choisir la langue et ceux qui s'affichent différement en fonction de la langue.

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2008
    Messages : 104
    Par défaut
    J'ai le menu pour choisir la langue, UILangMenu et UILangMenuItem.
    Quand je change la langue grâce à ce menu, c'est le menu UIMenuItem qui ne se rafraichi pas (ne change pas la langue)!

    (Mais le UIlangMenuItem ne se rafraichi pas non plus, car il place l'attribut "active" sur plusieurs champs)

  12. #12
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    peux tu nous aiguiller dans menuitem.java sur le code qui devrait être spécifique à la langue de l'utilisateur? Je ne vois nulle part dans son code où tu utilisae la langue et donc, où l'affichage devrait être différent en fonction de la langue. Si c'est la "value" ou un attribut du composant qui doit enchanger en fonction de la langue, peux tu fournir le jsp / xhtml utilsant ce uimenuitem?

  13. #13
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2008
    Messages : 104
    Par défaut
    Pour l'affichage selon la bonne langue c'est dans cette partie ci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    if (active != null) {
                if ((this.styleClass != null) && (FacesUtil.isLang(this.lang))) {
                    this.styleClass = this.styleClass + " " + active;
                } else if ((this.styleClass == null) && (FacesUtil.isLang(this.lang))) {
                    this.styleClass = active;
                }
            }
    voici le code du FacesUtil.isLang:

    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
    /**
         * Use to know the language used.
         * 
         * @param inLang
         * 
         * @return true if the language specified is used
         */
        public static boolean isLang(String inLang) {
            if (FacesUtil.getLang().toString().compareToIgnoreCase(inLang) == 0) {
                return true;
            }
            return false;
        }
     
    public static Locale getLang() {
            FacesContext context = FacesContext.getCurrentInstance();
            return context.getViewRoot().getLocale();
        }
     
     public static void chLang(Locale lang) {
            FacesContext context = FacesContext.getCurrentInstance();
            context.getViewRoot().setLocale(lang);
        }
    Et voici le code dans ma page jsp:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <h:form>
    <c:langMenu activeStyleClass="active" div1StyleClass="leftCol clearfix" div2StyleClass="leftColInner rightFloat" ulStyleClass="langNav horizontal clearfix">
    <c:langMenuItem styleClass="first" title="Nederlands" lang="nl" value="nl" action="#{userCtrl.langNL}" />
    <c:langMenuItem styleClass="" title="Français" lang="fr" value="fr" action="#{userCtrl.langFR}" />
    <c:langMenuItem styleClass="last" title="English" lang="en" value="en" action="#{userCtrl.langEN}" />
    </c:langMenu>
    </h:form>
    Et pour mon menu, voici le code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    	<h:form>
    		<c:menu disabledStyleClass="disabled" activeStyleClass="active" styleClass="horizontalNav horizontal clearfix" levelMin="#{userCtrl.level.min}">
    			<c:menuItem levelMin="#{userCtrl.level.min}" id="home" styleClass="first" value="#{msg.menu_home}" action="#{navBean.menu}" />
    			<c:menuItem levelMin="#{userCtrl.level.report}" id="report" styleClass="" value="#{msg.menu_report}" action="#{navBean.report}" />
    			<c:menuItem levelMin="#{userCtrl.level.taskRead}" id="task" styleClass="" value="#{msg.menu_task}" action="#{navBean.task}" />
    			<c:menuItem levelMin="#{userCtrl.level.customerRead}" id="customer" styleClass="" value="#{msg.menu_customer}" action="#{navBean.customer}" />
    			<c:menuItem levelMin="#{userCtrl.level.userRead}" id="user" styleClass="" value="#{msg.menu_user}" action="#{navBean.user}" />
    			<c:menuItem levelMin="#{userCtrl.level.historyRead}" id="history" styleClass="" value="#{msg.menu_history}" action="#{navBean.history}" />
    			<c:menuItem levelMin="#{userCtrl.level.min}" id="disconnect" styleClass="last" value="#{msg.menu_disconnect}" action="#{userCtrl.logout}" />
    		</c:menu>
    	</h:form>

  14. #14
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    ok, je commence a y voir plus claire

    tu peux montrer le code qui appelle chLang?

    et tu devrais éviter ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FacesUtil.getLang().toString().compareToIgnoreCase(inLang)
    pour préférer çà:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    return FacesUtil.getLang().getLanguage().equals(inLang);
    car le toString ne contient peut être pas ce que tu pense.

  15. #15
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2008
    Messages : 104
    Par défaut
    Okay ! donc voici le code qui est appellé lors de l'action:

    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
     /**
         * Define the language in french.
         * 
         * @return " "
         */
        public String langFR() {
            FacesUtil.chLang(Locale.FRENCH);
            return "null";
        }
     
        /**
         * Define the language in english.
         * 
         * @return " "
         */
        public String langEN() {
            FacesUtil.chLang(Locale.ENGLISH);
            return "null";
        }
     
        /**
         * Define the language in nederlands.
         * 
         * @return " "
         */
        public String langNL() {
            return "null";
        }
    Je retourne "null" car il ne doit y avoir aucune redirection!

  16. #16
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    a part le test que j'ai mentionné, je vosi rien de choquant dans ton code. Peut etre mettre des breakpoints dans tes renderer pour voir si ils sont bien appelés? et fait du pas a pas pour voir si la langue fonctionne correctement dedans....

  17. #17
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2008
    Messages : 104
    Par défaut
    tout fonctionne bien, j'ai meme essayé de retourner un mot clé au lieu de "null" et la il redirige bien et change bien la langue du menu :s
    Je vais continuer de chercher, mais je suis un peu perdu!

  18. #18
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    si tu utilise des trucs genre requete JSF en ajax, ca pourrait venir de là. Sinon, y a pas de raison que ton render() ne soit pas appelé par JSF et à voir ton code, le render utilise bien la bonne version de la locale du viewroot.

  19. #19
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2008
    Messages : 104
    Par défaut
    Ca va j'ai trouvé!
    En fait je sauvais et restaurais l'état avec l'attribut "value" mais il doit être rechargé en fonction de la langue, pas garder la valeur!
    C'etait tout bête !

    Voila! Merci pour votre aide

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

Discussions similaires

  1. Problème d'actualisation des pages web
    Par 3psilOn dans le forum Internet
    Réponses: 3
    Dernier message: 10/10/2006, 19h47
  2. Réponses: 5
    Dernier message: 14/08/2006, 04h04
  3. probléme d'insert dans une page asp !
    Par tomtom25 dans le forum ASP
    Réponses: 5
    Dernier message: 31/03/2005, 16h04
  4. Problème de chaine sur une page HTML
    Par Kerod dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 23/11/2004, 16h23
  5. [Débutant] Problème de déconnexion d'une page JSP
    Par amal9 dans le forum Servlets/JSP
    Réponses: 12
    Dernier message: 22/01/2004, 13h40

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