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 :

Génération dynamique d'un SelectOneMenu JSF 2.0


Sujet :

JSF Java

  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2011
    Messages : 30
    Par défaut Génération dynamique d'un SelectOneMenu JSF 2.0
    Bonjour,

    je dois pour mon stage développer une application de génération de questionnaire avec jsf 2.0.

    L'une des étapes de la création d'un questionnaire est de choisir le contenu de celui via des h:selectOneMenu avec le type de question qu'il souhaite ajouter (Ouverte,fermée,NPS,etc...)

    J'ai donc créé dans la page xhtml un h:selectOneMenu, un label qui correspond au titre de la question et un inputText pour qu'il puisse saisir le titre et un bouton "Ajouter" qui va permettre de créer cette question.

    Je souhaite maintenant que quand l'utilisateur clic sur le bouton ajouter, une nouvelle listeBox apparaisse avec un label titre et un input text Type.

    J'arrive à ajouter du texte dynamique mais ajouter des composants, c'est une autre histoire....

    Pour l'instant, j'ai mis une action sur le commandButton qui appelle la méthode addComponentde mon GridCentraleController (managed bean de la page) qui permet d'ajouter des elements.

    Ensuite, j'ai dans ma page xhtml un :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <h:panelGrid binding="#{gridPanelCentralController.containerComponent}"/>
    , qui est appelé quand je charge la page.

    Voila ma méthode add Component :

    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
    public void addComponents() {
            //clean previous component
            containerComponent.getChildren().clear();
            //ajout dynamique des composants au Container
     
            UIColumn col=new UIColumn();
            HtmlOutputText ot = new HtmlOutputText();
            ot.setValue("coucou");
            col.getChildren().add(ot);
     
            //C'est ici que je bloque :'(
            UIColumn col2=new UIColumn();
            HtmlSelectOneMenu selecta=new HtmlSelectOneMenu();
            //Ajout des elements de la listeBox
            selecta.????? 
            //Ajout de la listeBox à une colonne pour l'ajouter au container
            col2.getChildren().add(selecta);
     
            if (containerComponent == null) {
                containerComponent = new HtmlPanelGrid();
            }
            containerComponent.getChildren().add(col);
            containerComponent.getChildren().add(col2);
        }
    Dans cette méthode, ce qui me pose un problème et comment ajouter le contenu de la listeBox alors que je ne peux pas faire de f:selectItem ?

    Merci à toute éventuelle personne pouvant m'aider.

    Anack.

  2. #2
    Membre du Club
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2011
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 37
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2011
    Messages : 9
    Par défaut
    Chaque composant possède un attribut rendered qui prend une valeur booléenne, donc tu peux ecrire en amont ton composant dans ta jsp, en initialisant ton boolean à false depuis ton bean.

    puis au click sur un bouton, il suffit d’appeler une fonction qui fera passer le boolean de false à true !

    ça marche bien si tu connais à l’avance le nombre de composant à afficher ou à masquer, et si ce nombre est raisonnable. De cette manière, tu pourras décrire la liste pour les selectItems.

    dis moi ce qu'il en est

    ++

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2011
    Messages : 30
    Par défaut
    Merci bien pour ta réponse,

    J'ai fait un peu comme tu disais avec une petite variante, je m'explique.

    J'ai fait en fait un panelGrid qui est caché avec son attribut rendered.
    Quand on ajoute une question, elle est ajoutée à une liste et le contenu du panel est réinitialisé.

    Comme ça je peux remplir ma liste de plusieur question avec une seule listeBox.

    Car effectivement, je ne pense pas que ce soit possible de créer des composants dynamiquement si on ne connait pas le nombre de composant que l'on veux ajouter.

    Cela dit ce que j'ai fait marche plutôt correctement.

    Merci beaucoup pour ta réponse !

    ++

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

Discussions similaires

  1. [PDF]Génération dynamique de PDF et stockage
    Par JeJerom dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 18/01/2006, 15h25
  2. VB - Génération dynamique de controles dans un forme
    Par jeanangel dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 19/12/2005, 21h09
  3. [DOM] Génération dynamique fichier xml
    Par Fabouney dans le forum Bibliothèques et frameworks
    Réponses: 3
    Dernier message: 03/10/2005, 09h45
  4. [SQL*Plus] génération dynamique du fichier de spool
    Par lalystar dans le forum Oracle
    Réponses: 3
    Dernier message: 06/12/2004, 10h44
  5. Réponses: 7
    Dernier message: 22/10/2004, 16h18

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