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

Wicket Java Discussion :

Affichage de liste imbriqué


Sujet :

Wicket Java

  1. #1
    Membre du Club
    Inscrit en
    Février 2007
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 63
    Points : 48
    Points
    48
    Par défaut Affichage de liste imbriqué
    Bonjour,

    Ma question concerne l'utilisation des ListView pour afficher des données un peu complexe. Le type d'objet en question ressemble à cela:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    public class MonObjet{
    	private List<Personne> listePersonne;
    }
     
    public class Personne{
    	private String nom;
    	private String prenom;
    	private List<Voiture> voitures;
    }
    public class Voiture{
    	private String marque;
    	private String puissance;
    }
    Comment avec une listeView (ou un autre truc qui ferait ce boulot) je peux afficher MonObjet. C'est à dire la liste de toutes les personne avec Nom, Prenom et pour chaque personne sa liste de voiture.

    Vu comme ça, ça peut paraitre idiot. Je vous rassure c'est juste un exemple qui reflète mon problème car je ne me permettrait pas de vous faire perdre votre temps avec un exercice de ce genre.

    Merci d'avance

  2. #2
    Membre expérimenté

    Inscrit en
    Décembre 2004
    Messages
    584
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 584
    Points : 1 374
    Points
    1 374
    Par défaut
    Bonjour Nico87

    Dans la listView, on définit le contenu de chaque ListItem. Dès lors, pourquoi ne pas inclure une listView (pour la liste de voitures) au sein du listItem correspondant à la ListView des personnes ? Bien sûr, ce même listItem aurait aussi des labels/textfields correspondant au nom et prénom.

    J'ai déjà pratiqué cela et même une listview récursive : cela fonctionne très bien.

    Au final, je me demande si j'ai bien compris l'éventuel problème...

    Si besoin je devrai pouvoir coder un rapide exemple.

    cordialement,
    joseph
    Merci d'utiliser le bouton [Résolu] pour les sujets qui le sont.
    [pub]mon blog franco anglais, article du moment: Wicket: fournir des données JSON via Ajax[/pub]

  3. #3
    Membre du Club
    Inscrit en
    Février 2007
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 63
    Points : 48
    Points
    48
    Par défaut
    Je pense que tu as très bien compris le problème. Mais je crains être tellement embrouillé que ne vois pas trop comment faire. Peut tu me mettre un petit exemple d'imbrication de listView à partir de mon exemple STP.

    Merci beaucoup,

  4. #4
    Membre expérimenté

    Inscrit en
    Décembre 2004
    Messages
    584
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 584
    Points : 1 374
    Points
    1 374
    Par défaut
    hum, rien de sorcier là dedans, voici un bref exemple :
    Java :
    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
     
    public class PersonListPage extends WebPage
    {
        public PersonListPage(final IModel<List<Personne>> listModel)
        {
            add(new ListView<Personne>("personnesList", listModel)
            {
     
                @Override
                protected void populateItem(final ListItem<Personne> item)
                {
                    item.add(new Label("nom", item.getModelObject().nom));
                    item.add(new Label("prenom", item.getModelObject().prenom));
                    item.add(new ListView<Voiture>("voituresList", item.getModelObject().voitures)
                    {
     
                        @Override
                        protected void populateItem(final ListItem<Voiture> item)
                        {
                            item.add(new Label("marque", item.getModelObject().marque));
                            item.add(new Label("puissance", item.getModelObject().puissance));
                        }
     
                    });
                }
     
            });
        }
    }
    html :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <html>
    	<body>
    		<div wicket:id="personnesList">
    			<wicket:container wicket:id="nom"></wicket:container> <wicket:container wicket:id="prenom"></wicket:container> <br/>
    			Voitures :<br/>
    			<div wicket:id="voituresList">
    				<wicket:container wicket:id="marque"></wicket:container> <wicket:container wicket:id="puissance"></wicket:container> <br/>
    			</div>
    		</div>
    	</body>
    </html>
    A noter que je suis allé au plus rapide et que je n'ai pas testé le bout (pseudo code powa), mais normalement tout y est.

    Par ailleurs, si je devrais coder ça, je ferais sans doute un PersonneViewPanel et un VoitureViewPanel. Le code deviendrait alors bien plus simple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    add(new ListView<Personne>("personnesList", listModel)
            {
     
                @Override
                protected void populateItem(final ListItem<Personne> item)
                {
                    item.add(new PersonneViewPanel("personneEdit", item.getModel());
                }
     
            });
    puis dans PersonViewPanel
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    add(new Label("nom", getModelObject().nom));
    add(new Label("prenom", getModelObject().prenom));
    add(new ListView<Voiture>("voitureList", listModel)
            {
     
                @Override
                protected void populateItem(final ListItem<Voiture> item)
                {
                    item.add(new VoitureViewPanel("voitureView", item.getModel());
                }
     
            });
    est ce bon ainsi ?

    ++
    Merci d'utiliser le bouton [Résolu] pour les sujets qui le sont.
    [pub]mon blog franco anglais, article du moment: Wicket: fournir des données JSON via Ajax[/pub]

  5. #5
    Membre du Club
    Inscrit en
    Février 2007
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 63
    Points : 48
    Points
    48
    Par défaut
    C'est très très bon! je te remercie

    @+

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 25/10/2005, 20h51
  2. Présentation dans des listes imbriquées
    Par Ghusse dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 29/09/2005, 09h35
  3. [XHTML] Listes imbriquées valides ?
    Par Amon dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 23/09/2005, 23h05
  4. [CSS] listes imbriquées et conformité W3C
    Par rapathonyk dans le forum Mise en page CSS
    Réponses: 3
    Dernier message: 25/07/2005, 09h40
  5. Réponses: 15
    Dernier message: 20/07/2004, 09h22

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