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 dans JSF


Sujet :

JSF Java

  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2013
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2013
    Messages : 11
    Par défaut Problème dans JSF
    Bonjour à tous , mon besoin est d'ajouter une "item" à selectOneMenu qui prend la valeur nulle. Pour bien expliquer mon projet ; je veux créer une intervention d'une panne pour l'un des matériels dans une société et j'ai liste des scanners , des imprimantes et des ordinateurs , et chaque type de matériel a sa liste indépendante de l'autre. Alors , si j ai une panne à l'ordinateur je vais choisir l'un des ordinateurs et je met pour l'autre liste des scanners et des imprimantes
    "rien" . Comment je dois faire ??

    Voici le code d'affichage du SelectOneMenu :


    <h:outputLabel value="Idscanner:" for="idscanner" />
    <h:selectOneMenu id="idscanner" value="#{interventionBean.intervention.idscanner}" title="Idscanner" converter="#{interventionBean.scannerConverter}">
    <!-- TODO: update below reference to list of available items-->
    <f:selectItems value="#{interventionBean.scanners}"/>
    </h:selectOneMenu>

    Merci

  2. #2
    Membre expérimenté Avatar de fastdeath124
    Homme Profil pro
    Ingénieur sécurité
    Inscrit en
    Août 2011
    Messages
    117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Ingénieur sécurité

    Informations forums :
    Inscription : Août 2011
    Messages : 117
    Par défaut
    Bonjour,
    Si je comprends bien le problème, tu veux avoir la possibilité de laisser un SelectOneMenu vide. Je te propose d'ajouter une valeur "" (vide) à la liste "interventionBean.scanners" (cette valeur doit être la première).
    Dans le managedBean, pour savoir si une valeur a été sélectionnée, il suffit de tester
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if("".equals(intervention.idscanner))

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2013
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2013
    Messages : 11
    Par défaut RE
    Mais la liste des scanners sont pris à travers une table dans une BD O.o ??
    voici le code:

    public Converter getScannerConverter() {
    return scannerConverter;
    }

    private Converter scannerConverter = new Converter() {

    @Override
    public Object getAsObject(FacesContext context, UIComponent component, String value) {
    System.out.println("Dans GET AS Object : " + value);
    String code = value.split(" ", 2)[0];
    Scanner sc = manager.getScannerFromStringCode(""+code);
    return sc;
    }

    @Override
    public String getAsString(FacesContext context, UIComponent component, Object value) {
    Scanner dc = (Scanner) value;
    return dc.getIdscanner()+ " : " + dc.getAdresseIp()+ " " ;
    }
    };


    public List<SelectItem> getScanners() {
    List<SelectItem> options = new ArrayList<SelectItem>();
    List<Scanner> lsc = manager.getAllScanners();
    for(Scanner sc : lsc) {
    options.add(new SelectItem(sc,scannerConverter.getAsString(null, null, sc)));
    }
    return options;
    }

  4. #4
    Membre expérimenté Avatar de fastdeath124
    Homme Profil pro
    Ingénieur sécurité
    Inscrit en
    Août 2011
    Messages
    117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Ingénieur sécurité

    Informations forums :
    Inscription : Août 2011
    Messages : 117
    Par défaut
    Je ne sais pas vraiment le contexte général du code mais je pense qu'il est possible d'ajouter un SelectItem vide à la liste juste avant la boucle for:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    //on ajoute ici un truc du genre options.add(new SelectItem("",""));
    for(Scanner sc : lsc) {
    options.add(new SelectItem(sc,scannerConverter.getAsString(null, null, sc)));
    }
    Est-ce possible?

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2013
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2013
    Messages : 11
    Par défaut RE2;
    nn ne marche pas :/

  6. #6
    Membre Expert Avatar de Nico02
    Homme Profil pro
    Developpeur Java/JEE
    Inscrit en
    Février 2011
    Messages
    728
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Developpeur Java/JEE
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2011
    Messages : 728
    Par défaut
    Salut,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    options.add(new SelectItem(""));
    marche très bien chez moi


    Cdt.

  7. #7
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2013
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2013
    Messages : 11
    Par défaut RE3:
    Nn marche pas , je suis sur que le probléme chez le converter et ses fonctions getAsObject(); et getAsString(); il faut faire modification quel est je sais pas :/ ?

  8. #8
    Membre averti
    Inscrit en
    Mars 2009
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 36
    Par défaut
    bonjour, j'adhère à la solution de fastdeath124, ça se résout en ajoutant un item blanc à la liste:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    options.add(new SelectItem(null,"rien"));
    for(Scanner sc : lsc) {
    options.add(new SelectItem(sc,scannerConverter.getAsString(null, null, sc)));
    }
    mais on doit tenir compte de cette modification lors de sérialization(l'appel à getAsString qui sert à encoder le rendu html) et de la déserialization ( l'appel à getAsObject pour extraire l’objet et l'assigner au modèle) .

    -En sérialization il faut ajouter une condition qui encode la valeur null:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    @Override
    public String getAsString(FacesContext context, UIComponent component, Object value) {
    if(value==null){
    return "RIEN";// une chaine spécifique.
    }
    Scanner dc = (Scanner) value;
    return dc.getIdscanner()+ " : " + dc.getAdresseIp()+ " " ;
    }
    };
    -En déserialization il faut ajouter une condition qui manipule la valeur RIEN et renvoie un objet null:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    @Override
    public Object getAsObject(FacesContext context, UIComponent component, String value) {
    System.out.println("Dans GET AS Object : " + value);
    if("RIEN".equals(value)){
        return null;
    }
    String code = value.split(" ", 2)[0];
    Scanner sc = manager.getScannerFromStringCode(""+code);
    return sc;
    }

Discussions similaires

  1. Réponses: 10
    Dernier message: 03/05/2017, 12h09
  2. Problème de configuration de RichFaces dans JSF
    Par Yassine_ba dans le forum JSF
    Réponses: 3
    Dernier message: 26/02/2012, 10h02
  3. Réponses: 1
    Dernier message: 27/01/2011, 12h47
  4. Problème dans analisys Manager
    Par ien_ien23 dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 11/07/2003, 14h38
  5. Problème dans requête avec count()
    Par BadFox dans le forum Requêtes
    Réponses: 3
    Dernier message: 08/07/2003, 18h02

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