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 :

Case Of en JSF


Sujet :

JSF Java

  1. #1
    Membre averti
    Inscrit en
    Avril 2009
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 35
    Par défaut Case Of en JSF
    Salut,

    J'ai pas mal chercher avant de poster mais je n'ai pas trouvé.
    J'affiche selon le résultat une image comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     <h:graphicImage value="#{(build.status=='RJ'?'/img/approved.png':'/img/declined.png')}" />
    Je voudrai faire un caseof car je voudrai afficher 3 image selon le status.

    Est ce que ça existe?

    Merci

  2. #2
    Membre expérimenté Avatar de Shinzul
    Homme Profil pro
    Lecteur assidu de code source
    Inscrit en
    Janvier 2008
    Messages
    174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Lecteur assidu de code source
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2008
    Messages : 174
    Par défaut
    Je vais te répondre non pour ma part, je ne crois pas que cela existe.

    Par contre tu peut faire quelque chose comme ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <h:graphicImage value="/img/approved.png" rendered="#{build.status == 'RJ'}"/>
     
    <h:graphicImage value="/img/declined.png" rendered="#{build.status == 'XX'}"/>
     
    <h:graphicImage value="/img/image3.png" rendered="#{build.status == 'YY'}"/>

  3. #3
    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
    Tu peux imbriquer les opérateurs ternaires, mais ça deviens vite imbuvable:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <h:graphicImage value="#{(build.status=='RJ')?'/img/approved.png':(build.status=='XX')?'/img/declined.png':'/img/pending.png'}" />

    Le rendered est la solution la plus propre

  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 : 47
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Java craftsman
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2005
    Messages : 3 790
    Par défaut
    Oui, ou encore proposer une propriété de ton bean qui se charge de ça :

    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    <h:graphicImage src="#{build.statusImg}"/>

    et :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    public String getStatusImg() {
        if ("RJ".equals(status)) {
            return "/img/approved.png";
        } else if (...) {
            ...
        }
        ...
    }
    Une autre idée, c'est d'avoir une enum, qui contient les images aussi :

    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
    public enum BuildStatus {
     
        APPROVED("RJ", "/img/approved.png"),
        ...
     
        private String status;
        private String image;
     
        private BuildStatus(String status, String image) {
            this.status = status;
            this.image = image;
        }
     
        public String getStatus() { return this.status; }
        public String getImage() { return this.image; }
     
    }
    Comme ça, après il te suffit de faire référence à l'enum plutôt qu'à un String :

    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
        <h:outputText value="Status: #{build.status.status}"/>
        <h:graphicImage src="#{build.status.image}"/>
    Nous sommes tous semblables, alors acceptons nos différences !
    --------------------------------------------------------------
    Liens : Blog | Page DVP | Twitter
    Articles : Hudson | Sonar | Outils de builds Java Maven 3 | Play! 1 | TeamCity| CitConf 2009
    Critiques : Apache Maven

  5. #5
    Membre averti
    Inscrit en
    Avril 2009
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 35
    Par défaut
    Merci beaucoup pour vos réponse!

    ça répond très bien à mon besoin. J'ai finin par faire avec la première méthode avec reRender car ça minimise le code!!

    Encore merci

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

Discussions similaires

  1. JSF 2.0 Annotation de navigation-case
    Par Chabanus dans le forum JSF
    Réponses: 2
    Dernier message: 05/03/2011, 18h51
  2. Réponses: 5
    Dernier message: 20/11/2008, 12h47
  3. Réponses: 6
    Dernier message: 17/03/2006, 11h44
  4. Réponses: 6
    Dernier message: 26/01/2003, 13h45
  5. case sensible
    Par zdra dans le forum C++Builder
    Réponses: 2
    Dernier message: 29/11/2002, 20h15

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