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 :

[PrimeFaces] TreeView alimenté à partir de la base de données


Sujet :

JSF Java

  1. #1
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Août 2012
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2012
    Messages : 31
    Points : 18
    Points
    18
    Par défaut [PrimeFaces] TreeView alimenté à partir de la base de données
    Bonjour,

    J'aimerais remplir un TreeView à partir de la base de données. L'exemple fourni par le site primefaces.org est statique. J'ai maintenant ce TreeView et je voudrais qu'il soit alimenté à partir de la base.

    Nom : treeview.PNG
Affichages : 1453
Taille : 5,6 Ko
    Je travaille avec Eclipse.

    Quelqu'un saurait-il me guider un peu ?

    Merci d'avance pour votre aide.

  2. #2
    Modérateur
    Avatar de Alkhan
    Homme Profil pro
    ingénieur full stack
    Inscrit en
    Octobre 2006
    Messages
    1 232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : ingénieur full stack

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 232
    Points : 2 061
    Points
    2 061
    Par défaut
    bonjour,
    Je ne comprend pas ta difficulté ! qu'est ce que tu n'arrives pas a faire ?
    tu as juste a :
    • Récupéré les données de la base de données
    • Créer les nodes avec les données récupérer
    Il n'y a pas de problème, il n'y a que des solutions.
    Cependant, comme le disaient les shadoks, s'il n'y a pas de solution, c'est qu'il n'y a pas de problème.
    Si toutefois le problème persiste, la seule solution restante est de changer le périphérique qui se trouve entre la chaise et l'écran

    Mes Articles : Mon premier article est sur le language D
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Août 2012
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2012
    Messages : 31
    Points : 18
    Points
    18
    Par défaut
    Bonjour,

    mon problème c'est comment récupérer les données car j'ai cherché sur net et j'ai trouvé qu'il me fallait coder un fonction récursive ,et comment faire l'appel de cette fonction dans ma page .xhtml ,je suis débutante et je sais que çà ne doit pas être une difficulté ..

  4. #4
    Modérateur
    Avatar de Alkhan
    Homme Profil pro
    ingénieur full stack
    Inscrit en
    Octobre 2006
    Messages
    1 232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : ingénieur full stack

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 232
    Points : 2 061
    Points
    2 061
    Par défaut
    Citation Envoyé par soumayachouchene Voir le message
    mon problème c'est comment récupérer les données car j'ai cherché sur net et j'ai trouvé qu'il me fallait coder un fonction récursive et comment faire l'appel de cette fonction dans ma page .xhtml
    Récursive ? moi je dirais pas forcément cela dépend de la façon dont c'est stocké dans la base.
    Pour avoir un aperçu de comment faire le lien entre la JSF et la base de données, regarde le tutorial "Création d'une application de type CRUD avec JSF et JPA"

    Si tu cherches une bonne introduction a JPA, regarde "Introduction à JPA, application au chargement de données depuis une base MySQL"

    Normalement avec ces deux liens tu devrais arriver a t'en sortir !
    Il n'y a pas de problème, il n'y a que des solutions.
    Cependant, comme le disaient les shadoks, s'il n'y a pas de solution, c'est qu'il n'y a pas de problème.
    Si toutefois le problème persiste, la seule solution restante est de changer le périphérique qui se trouve entre la chaise et l'écran

    Mes Articles : Mon premier article est sur le language D
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Août 2012
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2012
    Messages : 31
    Points : 18
    Points
    18
    Par défaut
    Merci beaucoup pour les liens Alkhan .En fait je suis entrains de développer une application javaEE en utilisant hibernate,spring et jsf (primefaces) ) ,j'ai arrivé à récupérer les données de la base dans un tableau
    et maintenant je voudrais que çà sera dans un treeview comme vous avez dit au début "Créer les nodes avec les données récupérées "
    Comment faire ceci ?

  6. #6
    Traductrice
    Avatar de Mishulyna
    Femme Profil pro
    Développeur Java
    Inscrit en
    Novembre 2008
    Messages
    1 504
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2008
    Messages : 1 504
    Points : 7 840
    Points
    7 840
    Par défaut
    Bonjour,

    Vous pourriez imaginer une méthode public TreeNode getRoot() {} qui vous ramène de la base de données la liste de tous les objets de type "root", et dans laquelle vous appelez une autre méthode qui crée des new DefaultTreeNode() à partir des la liste d'objets dépendants de chaque "root".
    Chaque fois que tu dis "je ne peux pas", n'oublie pas d'ajouter le mot "encore".

  7. #7
    Modérateur
    Avatar de Alkhan
    Homme Profil pro
    ingénieur full stack
    Inscrit en
    Octobre 2006
    Messages
    1 232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : ingénieur full stack

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 232
    Points : 2 061
    Points
    2 061
    Par défaut
    Citation Envoyé par Mishulyna Voir le message
    Bonjour,

    Vous pourriez imaginer une méthode public TreeNode getRoot() {} qui vous ramène de la base de données la liste de tous les objets de type "root", et dans laquelle vous appelez une autre méthode qui crée des new DefaultTreeNode() à partir des la liste d'objets dépendants de chaque "root".
    Entièrement d'accord a partir du moment ou le contenu de l'arbre peut contenir potentielement beaucoup de noeud, sinon cela risque de ralentir l'affichage des noeud inutilement !

    Citation Envoyé par soumayachouchene Voir le message
    j'ai arrivé à récupérer les données de la base dans un tableau
    Ok, mais ce sont juste les noeuds root ? Ou tout le contenu de l'arbre ?
    Mais ton arbre est il fixe ou peut il varier ? Peut il être très gros ?
    Si c'est le cas il faudra partir sur la solution de Mishulyna

    Citation Envoyé par soumayachouchene Voir le message
    Comment faire ceci ?
    Comme indiquer ci dessus cela depend de ton arbre !
    Que contient le tableau ?
    Il n'y a pas de problème, il n'y a que des solutions.
    Cependant, comme le disaient les shadoks, s'il n'y a pas de solution, c'est qu'il n'y a pas de problème.
    Si toutefois le problème persiste, la seule solution restante est de changer le périphérique qui se trouve entre la chaise et l'écran

    Mes Articles : Mon premier article est sur le language D
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  8. #8
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Août 2012
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2012
    Messages : 31
    Points : 18
    Points
    18
    Par défaut
    Merci Mishulyna et Alkhan pour vos réponses.
    Mais ton arbre est il fixe ou peut il varier ? Peut il être très gros ?
    Mon arbre peut varier avec possibilité d'ajout ou de suppression des nœuds .

    Comme indiquer ci dessus cela depend de ton arbre !
    Que contient le tableau ?
    Pour les données j'ai pensé à les stocker dans une seule table de la façon suivante:
    les champs de la table sont : node_id , node_name et parent-id (parent_id est le noeud pere du node_id )
    ici par exemple :jsf et base de donnée sont deux noeuds root ; primefaces et richfaces sont deux noeuds fils du noeud jsf.
    Nom : table.PNG
Affichages : 1361
Taille : 3,6 Ko
    Avec cette manière qu'est ce que vous proposez comme solution ?

  9. #9
    Modérateur
    Avatar de Alkhan
    Homme Profil pro
    ingénieur full stack
    Inscrit en
    Octobre 2006
    Messages
    1 232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : ingénieur full stack

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 232
    Points : 2 061
    Points
    2 061
    Par défaut
    Citation Envoyé par soumayachouchene Voir le message
    Avec cette manière qu'est ce que vous proposez comme solution ?
    Tu n'as toujours pas dis comment sont tes données dans ton tableau ?
    Mais d'un autre coté un tableau n'est pas forcement le plus adapté vu que tu peux ajouter des nœuds ou en retirer.
    Pourquoi ne pas avoir généré un arbre d'objet Node a partir des données récupérées de la base ?
    Il n'y a pas de problème, il n'y a que des solutions.
    Cependant, comme le disaient les shadoks, s'il n'y a pas de solution, c'est qu'il n'y a pas de problème.
    Si toutefois le problème persiste, la seule solution restante est de changer le périphérique qui se trouve entre la chaise et l'écran

    Mes Articles : Mon premier article est sur le language D
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  10. #10
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Août 2012
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2012
    Messages : 31
    Points : 18
    Points
    18
    Par défaut
    Tu n'as toujours pas dis comment sont tes données dans ton tableau ?
    c'est mon entité node :
    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
     
    @SuppressWarnings("serial")
    @Entity
    @Table(name = "node", catalog = "node")
    public class Node implements java.io.Serializable {
     
    	private Integer nodeid;
    	private String nodename;
    	private Integer pereid;
    	@OneToMany(mappedBy = "parentNode", fetch = FetchType.EAGER)
        private List<Node> nodes = new ArrayList<Node>();
    	private Node parentNode;
     
    	public Node() {
    	}
     
    	public Node(String nodename, Integer pereid) {
    		this.nodename = nodename;
    		this.pereid = pereid;
    	}
    	@Id
    	@Column(name = "NODEID", unique = true, nullable = false)
    	public Integer getNodeid() {
    		return this.nodeid;
    	}
     
    	public void setNodeid(Integer nodeid) {
    		this.nodeid = nodeid;
    	}
    	@Column(name = "NODENAME", nullable = false, length = 45)
    	public String getNodename() {
    		return this.nodename;
    	}
     
    	public void setNodename(String nodename) {
    		this.nodename = nodename;
    	}
    	@Column(name = "PEREID", nullable = false, length = 45)
    	public Integer getPereid() {
    		return this.pereid;
    	}
     
    	public void setPereid(Integer pereid) {
    		this.pereid = pereid;
    	}
     
    	@Column(name = "NODES", nullable = false, length = 45)
    	public List<Node> getNodes() {
    		return nodes;
    	}
     
    	public void setNodes(List<Node> nodes) {
    		this.nodes = nodes;
    	}
    	@ManyToOne
    	@JoinColumn(name="pereid")
    	public Node getParentNode() {
    		return parentNode;
    	}
     
    	public void setParentNode(Node parentNode) {
    		this.parentNode = parentNode;
    	}
    Pourquoi ne pas avoir généré un arbre d'objet Node a partir des données récupérées de la base ?
    C'est ce que je suis entrains de chercher : voici le code que j'ai implémenté dans mon bean (je travaille avec l'integration du (hibernate,spring,jsf2(primefaces))
    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
     
    public void ajouterFils(TreeNode root, Node node){
    			for(int i=0; i<node.getNodes().size(); i++){
    			TreeNode treeNode = new DefaultTreeNode(node.getNodes().get(i).getNodename(), root);
    			ajouterFils(treeNode, node.getNodes().get(i));
    			}
    			}
     
    		public NodeManagedBean() 
    		{
    			root = new DefaultTreeNode("Root", null); 
    			List lstNoeuds = nodeService.getNodes();
    			for(int i=0;i<lstNoeuds.size();i++)
    			           {
    			if(((Node) lstNoeuds.get(i)).getParentNode() == null){
    			TreeNode treeNode = new DefaultTreeNode(((Node)lstNoeuds.get(i)).getNodename(), root);
    			ajouterFils(treeNode, (Node) lstNoeuds.get(i));
    			                                        }
    			            }
    		 }
    et pour .xhtml j'ai mis ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     <p:tree value="#{nodeMB.root}" var="node" dynamic="true"
                            selectionMode="single" selection="#{nodeMB.selectedNode}">
                        <p:treeNode>
                            <h:outputText value="#{node}"/>
                        </p:treeNode>
                    </p:tree>
    Mais je ne sais pas pourquoi il m'affiche des errreurs comme:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Caused by: org.hibernate.MappingException: Could not determine type for: java.util.List, at 
     
    table: node, for columns: [org.hibernate.mapping.Column(NODES)]
    	at org.hibernate.mapping.SimpleValue.getType(SimpleValue.java:304)
    	at org.hibernate.mapping.SimpleValue.isValid(SimpleValue.java:288)
    	at org.hibernate.mapping.Property.isValid(Property.java:238)
    	at org.hibernate.mapping.PersistentClass.validate(PersistentClass.java:468)
    	at org.hibernate.mapping.RootClass.validate(RootClass.java:270)
    	at org.hibernate.cfg.Configuration.validate(Configuration.java:1290)
    	at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1732)
    	at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1778)
    et
    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
     
    Grave: Exception lors de l'envoi de l'évènement contexte initialisé (context initialized) à 
     
    l'instance de classe d'écoute (listener) 
     
    org.springframework.web.context.ContextLoaderListener
    org.springframework.beans.factory.BeanCreationException: Error creating bean with name 
     
    'NodeService' defined in ServletContext resource [/WEB-INF/applicationContext.xml]: Cannot 
     
    resolve reference to bean 'NodeDAO' while setting bean property 'nodeDAO'; nested exception 
     
    is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 
     
    'NodeDAO' defined in ServletContext resource [/WEB-INF/applicationContext.xml]: Cannot 
     
    resolve reference to bean 'SessionFactory' while setting bean property 'sessionFactory'; 
     
    nested exception is org.springframework.beans.factory.BeanCreationException: Error creating 
     
    bean with name 'SessionFactory' defined in ServletContext resource [/WEB-
     
    INF/applicationContext.xml]: Invocation of init method failed; nested exception is 
     
    org.hibernate.MappingException: Could not determine type for: java.util.List, at table: 
     
    node, for columns: [org.hibernate.mapping.Column(NODES)]
    	at 
     
    org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference
     
    (BeanDefinitionValueResolver.java:328)
    	at 
     
    org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessa
     
    ry(BeanDefinitionValueResolver.java:106)
    	at 
     
    org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyV
     
    alues(AbstractAutowireCapableBeanFactory.java:1360)
    	at 
     
    org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean
     
    (AbstractAutowireCapableBeanFactory.java:1118)
    	at 
     
    org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean
     
    (AbstractAutowireCapableBeanFactory.java:517)
    	at 
     
    org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean
     
    (AbstractAutowireCapableBeanFactory.java:456)
    	at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject
     
    (AbstractBeanFactory.java:294)
    	at 
     
    org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton
     
    (DefaultSingletonBeanRegistry.java:225)
    	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean
     
    (AbstractBeanFactory.java:291)
    	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean
     
    (AbstractBeanFactory.java:193)
    	at 
     
    org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingleto
     
    ns(DefaultListableBeanFactory.java:585)
    	at 
     
    org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitializat
     
    ion(AbstractApplicationContext.java:913)
    	at org.springframework.context.support.AbstractApplicationContext.refresh
     
    (AbstractApplicationContext.java:464)
    	at 
     
    org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext
     
    (ContextLoader.java:385)
    	at org.springframework.web.context.ContextLoader.initWebApplicationContext
     
    (ContextLoader.java:284)
    	at org.springframework.web.context.ContextLoaderListener.contextInitialized
     
    (ContextLoaderListener.java:111)
    	at org.apache.catalina.core.StandardContext.listenerStart
     
    (StandardContext.java:4939)
    	at org.apache.catalina.core.StandardContext.startInternal
     
    (StandardContext.java:5434)
    	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
    	at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559)
    	at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549)
    	at java.util.concurrent.FutureTask.run(Unknown Source)
    	at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    	at java.lang.Thread.run(Unknown Source)
    Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean 
     
    with name 'NodeDAO' defined in ServletContext resource [/WEB-INF/applicationContext.xml]: 
     
    Cannot resolve reference to bean 'SessionFactory' while setting bean property 
     
    'sessionFactory'; nested exception is 
     
    org.springframework.beans.factory.BeanCreationException: Error creating bean with name 
     
    'SessionFactory' defined in ServletContext resource [/WEB-INF/applicationContext.xml]: 
     
    Invocation of init method failed; nested exception is org.hibernate.MappingException: Could 
     
    not determine type for: java.util.List, at table: node, for columns: 
     
    [org.hibernate.mapping.Column(NODES)]

  11. #11
    Membre éprouvé
    Avatar de Cafeinoman
    Homme Profil pro
    Couteau suisse d'une PME
    Inscrit en
    Octobre 2012
    Messages
    628
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Couteau suisse d'une PME

    Informations forums :
    Inscription : Octobre 2012
    Messages : 628
    Points : 1 256
    Points
    1 256
    Par défaut
    Pour la première erreur, tu ne devrais pas avoir de colonne nodes, la table ne référence pas ses enfants. Tu un one to many sir ta list de node, mappedBy parentNode ou tu as un many to one.
    Une remarque aussi, ne met pas tes mapping et sur les champs et sur les getters, ca entraine des doublons.
    «Dieu ne joue pas aux dés.» - Albert Einstein. Et pan! 30 ans de retard dans la théorie quantique!
    «Tout n'est pas politique, mais la politique s'intéresse à tout.» - Nicolas Machiavel. Et surtout à ceux qui ne s'y intéressent pas.

  12. #12
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Août 2012
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2012
    Messages : 31
    Points : 18
    Points
    18
    Par défaut
    c'est une relation "one to many " un noeuds peut avoir plusieurs noeuds fils .
    Qu'est ce que je devrais garder les annotations sur les attributs ou bien celle des getters ?

  13. #13
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Août 2012
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2012
    Messages : 31
    Points : 18
    Points
    18
    Par défaut
    J'ai changé le code :
    voici l'entité Node:
    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
     
    @SuppressWarnings("serial")
    @Entity
    @Table(name = "node", catalog = "node")
    public class Node implements java.io.Serializable {
     
    	private Integer nodeid;
    	private String nodename;
    	private Integer pereid;
     
    	public Node() {
    	}
     
    	public Node(String nodename) {
    		this.nodename = nodename;
    	}
     
    	public Node(String nodename, Integer pereid) {
    		this.nodename = nodename;
    		this.pereid = pereid;
    	}
    	@Id
    	@Column(name = "NODEID", unique = true, nullable = false)
    	public Integer getNodeid() {
    		return this.nodeid;
    	}
     
    	public void setNodeid(Integer nodeid) {
    		this.nodeid = nodeid;
    	}
    	@Column(name = "NODENAME", nullable = false, length = 45)
    	public String getNodename() {
    		return this.nodename;
    	}
     
    	public void setNodename(String nodename) {
    		this.nodename = nodename;
    	}
    	@Column(name = "PEREID", nullable = false, length = 45)
    	public Integer getPereid() {
    		return this.pereid;
    	}
     
    	public void setPereid(Integer pereid) {
    		this.pereid = pereid;
    	}
    	@Override
    	public String toString() {
    		StringBuffer strBuff = new StringBuffer();
    		strBuff.append("nideid : ").append(getNodeid());
    		strBuff.append(", nodename: ").append(getNodename());
    		strBuff.append(", pereid : ").append(getPereid());
    		return strBuff.toString();
    	}
    }
    et mon bean :

    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    @ManagedBean(name="nodeMB")
    @RequestScoped
    public class NodeManagedBean implements Serializable{
     
     
     
    	/**
             * 
             */
    	private static final long serialVersionUID = 1L;
    	private static final String SUCCESS = "success";
     
    	//Spring Node Service is injected...
    			@ManagedProperty(value="#{NodeService}")
    			INodeService nodeService;
    			   private TreeNode root;
    			   private TreeNode arbre;
    			   private TreeNode selectedNode;
    			   private  List<Node> nodeList;
    			   private static List<Node> araListe;
    			   private List<Node> subList;
    			   private Integer nodeid;
    			   private String nodename;
    		   	   private Integer pereid;
    	public NodeManagedBean() {
     
    		nodeList = new ArrayList<Node>();
    	        root=new DefaultTreeNode("Root",null);
    	      //  récupérer les données de la base dans une liste 
    	        nodeList.addAll(getNodeService().getNodes());
    	        arbre=new DefaultTreeNode("", root);
     
    	        recursive(nodeList, 0,arbre);
    	}
     
     public  void recursive(List<Node> nodeList, int id,TreeNode node){
             subList=new ArrayList<Node>();
            //liste des noeuds  enfants du noeud ayant nodi_id = id
             subList=fils(id);
           for(Node k:subList){
             TreeNode childNode=new DefaultTreeNode(k.getNodename(), node);
    //Arborescence Catégorie dans la table de base de données pour créer la bonne dynamique sous la forme d'un arbre
              recursive(subList, k.getNodeid(),childNode);
           }
     
     }
    	 public  List<Node> fils(int i)
    	    {
    	        araListe=new ArrayList<Node>();   /*par exp ceux ayant comme pereid=i seront stocké dans la liste araliste*/
    	        for(Node k:getNodeList()){
    	            if(k.getPereid()==i){
    	                araListe.add(k);
    	            }
    	        }
    	      return araListe;//retourne une liste de noeuds enfants 
    	    }
     
     
     
     
     
    		 public TreeNode getRoot() {
    		        return root;
    		    }
     
     
    		 public TreeNode getSelectedNode() {
    			return selectedNode;
    		}
     
    		public void setSelectedNode(TreeNode selectedNode) {
    			this.selectedNode = selectedNode;
    		}
     
    		public List<Node> getSubList() {
    			return subList;
    		}
     
    		public void setSubList2(List<Node> subList) {
    			this.subList = subList;
    		}
     
    		public void setRoot(TreeNode root) {
    			this.root = root;
    		}
     
     
     
     
    		private boolean show;
    	     public boolean isShow() {
    			return show;
    		}
     
    		public void setShow(boolean show) {
    			this.show = show;
    		}
     
     
     
    		/**
                     * Add Node
                     * 
                     * @return String - Response Message
                     */
     
    		/**
                     * Reset Fields
                     * 
                     */
    		public String go()
    		{
    			return SUCCESS;
    		}
     
    		public void reset() {
    			this.setNodeid(null);
    			this.setNodename("");
    			this.setPereid(null);
    		}
     
     
     
    		public List<Node> getNodeList() {
     
    		/*	nodeList = new ArrayList<Node>();
    			nodeList.addAll(getNodeService().getNodes()); */
    				return nodeList;
    			}
    Il m'affiche l'erreur suivante :

    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    Avertissement: Impossible d’instancier la classe «com.managedbean.NodeManagedBean».
    com.sun.faces.mgbean.ManagedBeanCreationException: Impossible d’instancier la classe «com.managedbean.NodeManagedBean».
    	at com.sun.faces.mgbean.BeanBuilder.newBeanInstance(BeanBuilder.java:193)
    	at com.sun.faces.mgbean.BeanBuilder.build(BeanBuilder.java:102)
    	at com.sun.faces.mgbean.BeanManager.createAndPush(BeanManager.java:409)
    	at com.sun.faces.mgbean.BeanManager.create(BeanManager.java:269)
    	at com.sun.faces.el.ManagedBeanELResolver.resolveBean(ManagedBeanELResolver.java:244)
    	at com.sun.faces.el.ManagedBeanELResolver.getValue(ManagedBeanELResolver.java:116)
    	at com.sun.faces.el.DemuxCompositeELResolver._getValue(DemuxCompositeELResolver.java:176)
    	at com.sun.faces.el.DemuxCompositeELResolver.getValue(DemuxCompositeELResolver.java:203)
    	at org.apache.el.parser.AstIdentifier.getValue(AstIdentifier.java:72)
    	at org.apache.el.parser.AstValue.getTarget(AstValue.java:94)
    	at org.apache.el.parser.AstValue.invoke(AstValue.java:259)
    	at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:274)
    	at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:105)
    	at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:88)
    	at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102)
    	at javax.faces.component.UICommand.broadcast(UICommand.java:315)
    	at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:794)
    	at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1259)
    	at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81)
    	at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
    	at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
    	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:593)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
    	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
    	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
    	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
    	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
    	at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)
    	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
    	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
    	at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1041)
    	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:603)
    	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
    	at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    	at java.lang.Thread.run(Unknown Source)
    Caused by: java.lang.NullPointerException
    	at tn.com.managedbean.NodeManagedBean.<init>(NodeManagedBean.java:50)
    	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    	at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
    	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
    	at java.lang.reflect.Constructor.newInstance(Unknown Source)
    	at java.lang.Class.newInstance(Unknown Source)
    	at com.sun.faces.mgbean.BeanBuilder.newBeanInstance(BeanBuilder.java:188)
    	... 40 more
    Merci pour l'aide

  14. #14
    Membre éprouvé
    Avatar de Cafeinoman
    Homme Profil pro
    Couteau suisse d'une PME
    Inscrit en
    Octobre 2012
    Messages
    628
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Couteau suisse d'une PME

    Informations forums :
    Inscription : Octobre 2012
    Messages : 628
    Points : 1 256
    Points
    1 256
    Par défaut
    Pour ton entité :


    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
     
    @SuppressWarnings("serial")
    @Entity
    @Table(name = "node", catalog = "node")
    public class Node implements java.io.Serializable {
     
    	private Integer nodeid;
    	private String nodename;
    	private Node pere;
            private List<Node> enfants;
     
    	public Node() {
    	}
     
    	public Node(String nodename) {
    		this.nodename = nodename;
    	}
     
    	public Node(String nodename, Node pere) {
    		this.nodename = nodename;
    		this.pere = pere;
    	}
    	@Id
    	@Column(name = "NODEID", unique = true, nullable = false)
    	public Integer getNodeid() {
    		return this.nodeid;
    	}
     
    	public void setNodeid(Integer nodeid) {
    		this.nodeid = nodeid;
    	}
    	@Column(name = "NODENAME", nullable = false, length = 45)
    	public String getNodename() {
    		return this.nodename;
    	}
     
    	public void setNodename(String nodename) {
    		this.nodename = nodename;
    	}
     
     
            // chaque enfant à un pere
            @ManyToOne
    	@JoinColumn(name = "PEREID", nullable = false, length = 45)
    	public Node getPere() {
    		return this.pereid;
    	}
     
    	public void setPere(Node pereid) {
    		this.pereid = pereid;
    	}
     
     
            //un pere peut avoir plusieurs enfants
            @OneToMany(mappedBy="pere")
    	public List<Node> getEnfants() {
    		return this.enfants;
    	}
     
    	public void setEnfants(List<Node> enfants) {
    		this.enfants = enfants;
    	}
     
            //on créé une méthode pour l'ajout d'un enfant
            public void addEnfant(Node enfant) {
                   this.getEnfants.add(enfant);
                   enfant.setPere(this);
            }
     
    	@Override
    	public String toString() {
    		StringBuffer strBuff = new StringBuffer();
    		strBuff.append("nideid : ").append(getNodeid());
    		strBuff.append(", nodename: ").append(getNodename());
    		strBuff.append(", pere : ").append(getPere().getNodeName()); //on zappe la récurssivité du toString() sinon ça boucle en infini;
                    strBuff.append(", enfants :");
                    for(Node enfant : getEnfants()){
                         strBuff.append(enfant.toString());
                    }
    		return strBuff.toString();
    	}
    }
    et pour le bean je pense que l'erreur vient de l'injection, mais n'étant pas un habitué de :

    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
    @ManagedBean(name="nodeMB")
    @RequestScoped
    public class NodeManagedBean implements Serializable{
     
     
     
    	/**
             * 
             */
    	private static final long serialVersionUID = 1L;
    	private static final String SUCCESS = "success";
     
    	//Spring Node Service is injected...
    			@Inject // et pas @ManagedProperty(value="#{NodeService}")
     
    // je n'ai pas regardé la suite...
    Bon courage.
    «Dieu ne joue pas aux dés.» - Albert Einstein. Et pan! 30 ans de retard dans la théorie quantique!
    «Tout n'est pas politique, mais la politique s'intéresse à tout.» - Nicolas Machiavel. Et surtout à ceux qui ne s'y intéressent pas.

  15. #15
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Août 2012
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2012
    Messages : 31
    Points : 18
    Points
    18
    Par défaut
    l'erreur vient de ces deux lignes : ici je voudrais récupérer la liste d'objet Node de la base mais toujours java.lang.NullPointerException

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
      //  récupérer les données de la base dans une liste 
    	        nodeList = new ArrayList<Node>();
    	        nodeList = getNodeService().getNodes();
    en fait je veux garder les mêmes champs de l'entité et pour l'ajout des fils je l'ai implémenté (une méthode récursive) dans le bean :
    voilà:
    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
    30
    31
    32
    public NodeManagedBean() {
     
    		nodeList = new ArrayList<Node>();
    	        root=new DefaultTreeNode("Root",null);
    	      //  récupérer les données de la base dans une liste 
    	        nodeList.addAll(getNodeService().getNodes());
    	        arbre=new DefaultTreeNode("", root);
     
    	        recursive(nodeList, 0,arbre);
    	}
     
     public  void recursive(List<Node> nodeList, int id,TreeNode node){
             subList=new ArrayList<Node>();
            //liste des noeuds  enfants du noeud ayant nodi_id = id
             subList=fils(id);
           for(Node k:subList){
             TreeNode childNode=new DefaultTreeNode(k.getNodename(), node);
    //Arborescence Catégorie dans la table de base de données pour créer la bonne dynamique sous la forme d'un arbre
              recursive(subList, k.getNodeid(),childNode);
           }
     
     }
    	 public  List<Node> fils(int i)
    	    {
    	        araListe=new ArrayList<Node>();   /*par exp ceux ayant comme pereid=i seront stocké dans la liste araliste*/
    	        for(Node k:getNodeList()){
    	            if(k.getPereid()==i){
    	                araListe.add(k);
    	            }
    	        }
    	      return araListe;//retourne une liste de noeuds enfants 
    	    }

  16. #16
    Membre éprouvé
    Avatar de Cafeinoman
    Homme Profil pro
    Couteau suisse d'une PME
    Inscrit en
    Octobre 2012
    Messages
    628
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Couteau suisse d'une PME

    Informations forums :
    Inscription : Octobre 2012
    Messages : 628
    Points : 1 256
    Points
    1 256
    Par défaut
    Ton null pointer vient de l'injection, le code que je t'ai donné ne marche pas non plus?
    Pour ce qui est de la méthode récursive de récupération des enfants, cest comme tu veux (ou peux) mais en termes de performances c'est beaucoup plus lourd je pense...
    «Dieu ne joue pas aux dés.» - Albert Einstein. Et pan! 30 ans de retard dans la théorie quantique!
    «Tout n'est pas politique, mais la politique s'intéresse à tout.» - Nicolas Machiavel. Et surtout à ceux qui ne s'y intéressent pas.

  17. #17
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Août 2012
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2012
    Messages : 31
    Points : 18
    Points
    18
    Par défaut
    Merci Cafeinoman pour le code mais pour l'entité je la génère avec hibernate tools à partir de la base ,le fait d'ajouter un attribut de type List<Node> me génère l'exception :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Caused by: org.hibernate.MappingException: Could not determine type for: java.util.List, at 
    table: node, for columns: [org.hibernate.mapping.Column(NODES)]
    j'ai pensé que la méthode que j'ai implémenté peut contourner le fait d'ajouter un attribut de type list dans l'entité .mais ici mon souci c'est comment récupérer la liste d'instance Node de ma base ?
    çà c'est l'implémentation de getNodes au niveau dao :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    @Override
    	public List<Node> getNodes() {
    		List list = getSessionFactory().getCurrentSession().createQuery("from Node").list();
    		return list;
    	}
    ici il me semble que les données ne sont pas récupérées dans nodeList

  18. #18
    Membre éprouvé
    Avatar de Cafeinoman
    Homme Profil pro
    Couteau suisse d'une PME
    Inscrit en
    Octobre 2012
    Messages
    628
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Couteau suisse d'une PME

    Informations forums :
    Inscription : Octobre 2012
    Messages : 628
    Points : 1 256
    Points
    1 256
    Par défaut
    Tu peux poster le code sql de ta table? Il est imposé ou tu peux y toucher? Parce que si tu as des colonnes nom, id, et pereid et que avec l'entité que je t'ai posté tu as cette erreur, je mange ma doc jpa...

    Pour ta liste de node, met un System.out.println(list.get(0).toString()) avant de la retourner pour voir ce que te dis ta console, tu verra s'il y a quelque chose dans ta liste. Mais à mon avis le null pointer ne vient pas de la mais de INodeService qui devrait être annoté @Inject et pas @ManagedBean...
    «Dieu ne joue pas aux dés.» - Albert Einstein. Et pan! 30 ans de retard dans la théorie quantique!
    «Tout n'est pas politique, mais la politique s'intéresse à tout.» - Nicolas Machiavel. Et surtout à ceux qui ne s'y intéressent pas.

  19. #19
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Août 2012
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2012
    Messages : 31
    Points : 18
    Points
    18
    Par défaut
    je m'excuse pour le retard voilà mon code sql :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    CREATE TABLE `tree` (
        `nodeid` INT(11) NOT NULL AUTO_INCREMENT,
        `nodename` VARCHAR(50) NOT NULL ,
        `parentId` INT(11) ,
        PRIMARY KEY (`nodeid`)
    );
    Je ne peux pas y toucher

    voici mon nouveau bean :
    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    @Component("treeMB")
    @Scope("view")
    public class TreeManagedBean {
     
    	private static final String SUCCESS = "success";
    	private TreeNode rootNode;
        private TreeNode selectedNode;
        @Autowired
        TreeService treeService;
        public TreeManagedBean() {
        }
     
    	public TreeService getTreeService() {
    		return treeService;
    	}
    	public void setTreeService(TreeService treeService) {
    		this.treeService = treeService;
    	}
     
    	@PostConstruct
        public void init() {
    //root est le node parent ayant comme parentid =0
            Tree root = treeService.getTreeById(0);
            rootNode = new DefaultTreeNode("Root", null);
            TreeNode t1 = createTree(root, rootNode);
     
        }
     
    	public TreeNode getRootNode() {
    		return rootNode;
    	}
     
    	public void setRootNode(TreeNode rootNode) {
    		this.rootNode = rootNode;
    	}
     
    	public TreeNode getSelectedNode() {
    		return selectedNode;
    	}
     
    	public void setSelectedNode(TreeNode selectedNode) {
    		this.selectedNode = selectedNode;
    	}
     
        // Recursive function to create tree
    	 public TreeNode createTree(Tree treeObj, TreeNode rootNode) {
    	        TreeNode newNode = new DefaultTreeNode(treeObj, rootNode);
     
    	   //     List<Tree> childNodes1 = treeService.getChildNodes(treeObj.getNodeid());
    	        List<Tree> childNodes1 = treeService.recupChildNodes(treeObj.getNodeid());
    	        for (Tree tt : childNodes1) {
    	            TreeNode newNode2 = createTree(tt, newNode);
    	        }
     
    	        return newNode;
    	    }
    et le .xhtml:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     <h:form>      
    	    <p:tree value="#{treeMB.rootNode}" var="node" >
                <p:treeNode>
                    <h:outputText value="#{node.getNodeName}" />
                </p:treeNode>
     
            </p:tree>
    	   </h:form>

  20. #20
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Août 2012
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2012
    Messages : 31
    Points : 18
    Points
    18
    Par défaut
    Merci à tous pour l'aide ,j'ai arrivé à résoudre mon problème voilà mon bean
    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
     
    @ManagedBean(name="nodeMB")
    @RequestScoped
    public class NodeManagedBean implements Serializable{
     
     
     
    	/**
             * 
             */
    	private static final long serialVersionUID = 1L;
    	private static final String SUCCESS = "success";
     
    	//Spring Node Service is injected...
    			@ManagedProperty(value="#{NodeService}")
     
    			INodeService nodeService;
    			   private TreeNode root;
    			   private TreeNode arbre;
    			   private TreeNode selectedNode;
    			   private  List<Node> nodeList;
    			   private static List<Node> araListe;
    			   private List<Node> subList;
    			   private Integer nodeid;
    			   private String nodename;
    		   	   private Integer pereid;
     
    	       public NodeManagedBean() {
    	       }
    	       @PostConstruct
    	       public void init() {
     
    	        root=new DefaultTreeNode("Root",null);
    	      //  récupérer les données de la base dans une liste 
    		   	 nodeList = new ArrayList<Node>();
    			//	nodeList.addAll(getNodeService().getNodes());
     
    	       nodeList = nodeService.getNodes();
    	        arbre=new DefaultTreeNode("", root);
     
    	     recursive(nodeList, 0,arbre);
    	}
     
     public  void recursive(List<Node> nodeList, int id,TreeNode node){
             subList=new ArrayList<Node>();
            //liste des noeuds  enfants du noeud ayant node_id = id
             subList=fils(id);
           for(Node k:subList){
             TreeNode childNode=new DefaultTreeNode(k.getNodename(), node);
              recursive(subList, k.getNodeid(),childNode);
           }
     
     }
    	 public  List<Node> fils(int i)
    	    {
    	        araListe=new ArrayList<Node>();   /*par exp ceux ayant comme pereid=i seront stocké dans la liste araliste*/
    	        for(Node k:getNodeList()){
    	            if(k.getPereid()==i){
    	                araListe.add(k);
    	            }
    	        }
    	      return araListe;//retourne une liste de noeuds enfants 
    	    }
    et ma page .xhtml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <h:form >
     
     
    <p:tree  value="#{nodeMB.root}" var="node" dynamic="true"
                            selectionMode="single" selection="#{nodeMB.selectedNode}">
                        <p:treeNode>
                            <h:outputText value="#{node}"/>
                        </p:treeNode>
                    </p:tree>
     
    </h:form>

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 4
    Dernier message: 16/05/2018, 17h26
  2. Réponses: 0
    Dernier message: 28/10/2013, 17h44
  3. Selected par défaut dans liste déroulante dynamique
    Par casimirine dans le forum Langage
    Réponses: 2
    Dernier message: 25/06/2013, 10h33
  4. Réponses: 5
    Dernier message: 15/12/2008, 17h15

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