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'affichage avec <f:facet>


Sujet :

JSF Java

  1. #1
    Membre confirmé
    Inscrit en
    Septembre 2006
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 74
    Par défaut Problème d'affichage avec <f:facet>
    Salut à tous!
    Voilà j'ai une dataTable et j'aimerais qu'en en-tête s'affiche un texte en fonction d'un de mes attributs d'un bean :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <h:column>
         <f:facet name="header">
              <h:outputText value="#{msg.texte1}" rendered="#{monBean.attribut!='valeur'}" />
              <h:outputText value="#{msg.texte2}" rendered="#{monBean.attribut=='valeur'}" />
         </f:facet>
         ...
    </h:column>
    Le problème c'est que mon deuxième outputText n'est jamais affiché que ma condition soit vraie ou fausse. Même si j'enlève les rendered, je n'ai qu'une valeur d'affichée. Y a-t-il quelque chose que j'oublie?

    Sinon d'une manière générale, y a-t-il moyen de faire des if...else pour l'affichage de composant avec JSF ? (a part la duplication des composants avec des rendered)

  2. #2
    Membre émérite Avatar de yann2
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2004
    Messages
    897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Hauts de Seine (Île de France)

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

    Informations forums :
    Inscription : Mai 2004
    Messages : 897
    Par défaut
    Salut !

    Ah tiens, je n'ai jamais eu ce cas avec JSF. Peut être est ce dû au fait que tu as deux outputText dans le f:facet Tu pourrais contourner le problème de cette manière :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <h:column>
         <f:facet name="header">
              <h:outputText value="#{monBean.texteAAfficher}"  />
         </f:facet>
         ...
    </h:column>
    et la méthode texteAAfficher va chercher dans les bundles en fonction de monBean.attribut.
    Mais il y a certainement plus élégant.

    Ou alors peut être que comme ça ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <h:column>
         <f:facet name="header">
              <t:div>
                <h:outputText value="#{msg.texte1}" rendered="#{monBean.attribut!='valeur'}" />
                <h:outputText value="#{msg.texte2}" rendered="#{monBean.attribut=='valeur'}" />
              </t:div>
         </f:facet>
         ...
    </h:column>
    Citation Envoyé par doc de facet
    This tag adds its child as a facet of the nearest parent UIComponent. A child consisting of multiple elements should be nested within a container component (i.e., within an h:panelGroup for HTML library components). Unless otherwise specified, all attributes accept static values or EL expressions.

    bon courage

  3. #3
    Membre confirmé
    Inscrit en
    Septembre 2006
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 74
    Par défaut
    Désolé pour le retard dans ma réponse... J'ai eu quelques jours d'absence dans le monde JSF!
    Le deuxième solution convient effectivement très bien!
    Pas testé la première car je la trouve moins belle... (mais elle doit sans aucun doute marcher).

    Résolu!

  4. #4
    Invité de passage
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 1
    Par défaut t:div ne fonctionne pas dans mon exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <f:facet name="header">
    <t:div>
    	<h:outputText id="totalsb" value="#{RT1List.total('salaire')}" rendered="#{pT1List.lannee >= pT1List.constantes.annee()}">
    	<f:converter converterId="DoubleConverter"/>  				</h:outputText>
    	<h:outputText value="#{RT1List.total_direct('salaire')}" rendered="#{!(pT1List.lannee >= pT1List.constantes.annee())}">
    	<f:converter converterId="DoubleConverter"/>  				</h:outputText>
    </t:div>
    </f:facet>

    Est-ce le converter qui pose pb ?

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

Discussions similaires

  1. Problème d'affichage avec IE
    Par sheepk dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 11/11/2005, 13h00
  2. Réponses: 6
    Dernier message: 19/05/2005, 11h06
  3. problème d'affichage avec printf
    Par sorari dans le forum C++
    Réponses: 12
    Dernier message: 08/03/2005, 18h30
  4. Réponses: 6
    Dernier message: 19/10/2004, 13h46
  5. Problème d'affichage avec trace
    Par WriteLN dans le forum Flash
    Réponses: 10
    Dernier message: 22/10/2003, 16h59

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