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 : TreeTable] Afficher les données d'une table dans un TreeTablea


Sujet :

JSF Java

  1. #1
    Membre habitué
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2007
    Messages
    310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

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

    Informations forums :
    Inscription : Mars 2007
    Messages : 310
    Points : 133
    Points
    133
    Par défaut [Primefaces : TreeTable] Afficher les données d'une table dans un TreeTablea
    Bonjour à la communauté,
    Je développe une application java ee avec le framework primefaces.
    Pour l'affichage des données, j'aimerai utilisé un TreeTable mais jusque la je n'y arrive pas.

    j'utilise Netbeans 8 comme IDE et JPA pour la persistance.

    voici la structure de ma table
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     
     CREATE TABLE service
    (
      idservice integer NOT NULL ,
      idservicepere integer,
      libelleservice character varying(4),
      CONSTRAINT pk_service_id PRIMARY KEY (idservice)
    )
    Un service peut avoir des sous services
    L'idée et d'afficher hiérarchiquement les sous services du service sous le service
    NB: J'ai crée les beans et Manage beans et j'arrive à afficher les données dans un DataTable


    Merci d'avance !

  2. #2
    Membre chevronné Avatar de jeffray03
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2008
    Messages
    1 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 501
    Points : 2 120
    Points
    2 120
    Par défaut
    salut,
    regardes ici.

    Eric

  3. #3
    Membre habitué
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2007
    Messages
    310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

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

    Informations forums :
    Inscription : Mars 2007
    Messages : 310
    Points : 133
    Points
    133
    Par défaut
    Citation Envoyé par jeffray03 Voir le message
    salut,
    regardes ici.

    Eric
    jeffray03 j'avais vu le lien que tu m'as proposé que j'ai même testé. cependant mon problème est comment extraire et structurer les données de la table avant d'alimenter le TreeTable.

  4. #4
    Membre chevronné Avatar de jeffray03
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2008
    Messages
    1 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 501
    Points : 2 120
    Points
    2 120
    Par défaut
    pour mieux t´aider,
    on aurait besoin d´un bout de code pour savoir ou est ce que cela coince.
    et surtout la representation que tu voudrais avoir.
    Eric

  5. #5
    Membre habitué
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2007
    Messages
    310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

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

    Informations forums :
    Inscription : Mars 2007
    Messages : 310
    Points : 133
    Points
    133
    Par défaut
    Citation Envoyé par rolls Voir le message
    jeffray03 j'avais vu le lien que tu m'as proposé que j'ai même testé. cependant mon problème est comment extraire et structurer les données de la table avant d'alimenter le TreeTable.
    voici les données brutes de ma table

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    idservice idservicepere       libelleservice
    1           ;0                      ;"Direction Générale des Impôts"
    2           ;0                      ;"Direction Générale des Systèmes d'Information"
    3           ;1                      ;"Direction du recouvrement"
    4           ;3                      ;"Service du contentieux"
    5           ;3                      ;"Service du recouvrement"
    6           ;5                      ;"Section recouvrement"
    7           ;5                      ;"section enquête"
    8           ;1                      ;"Direction des finances"
    et j'aimerai les structurées comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
     
    -Direction Générale des Impôts
         -Direction du recouvrement
              -Service du contentieux
              -Service du recouvrement
                     -Section recouvrement
                     -Section enquête
                     -...
         -Direction des finances
         -...
     
    -Direction Générale des Systèmes d'Information
    -...
    voici ma classe 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
     
    @Entity
    @Table(name = "service")
    @NamedQueries({
        @NamedQuery(name = "Service.findAll", query = "SELECT s FROM Service s")})
    public class Service implements Serializable {
        private static final long serialVersionUID = 1L;
        @Id
        @GeneratedValue(strategy = GenerationType.IDENTITY)
        @Basic(optional = false)
        @Column(name = "idservice")
        private Integer idservice;
        @Column(name = "idservicepere")
        private Integer idservicepere;
        @Size(max = 100)
        @Column(name = "libelleservice")
        private String libelleservice;
     
        public Service() {
        }
     
        public Service(Integer idservice) {
            this.idservice = idservice;
        }
     
        public Integer getIdservice() {
            return idservice;
        }
     
        public void setIdservice(Integer idservice) {
            this.idservice = idservice;
        }
     
        public Integer getIdservicepere() {
            return idservicepere;
        }
     
        public void setIdservicepere(Integer idservicepere) {
            this.idservicepere = idservicepere;
        }
     
        public String getLibelleservice() {
            return libelleservice;
        }
     
        public void setLibelleservice(String libelleservice) {
            this.libelleservice = libelleservice;
        }
     
        @Override
        public int hashCode() {
            int hash = 0;
            hash += (idservice != null ? idservice.hashCode() : 0);
            return hash;
        }
     
        @Override
        public boolean equals(Object object) {
            // TODO: Warning - this method won't work in the case the id fields are not set
            if (!(object instanceof Service)) {
                return false;
            }
            Service other = (Service) object;
            if ((this.idservice == null && other.idservice != null) || (this.idservice != null && !this.idservice.equals(other.idservice))) {
                return false;
            }
            return true;
        }
     
        @Override
        public String toString() {
            return "easyht.entites.Service[ idservice=" + idservice + " ]";
        }
     
    }
    ma classe Mangedbean
    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
     
    @Named(value = "serviceBean")
    @SessionScoped
    public class ServiceBean {
     
        /**
         * Creates a new instance of ServiceBean
         */
        public ServiceBean() {
        }
        @PostConstruct
        public void init(){
     
            Service rootNode = parametreService.getServiceRootNode();
            root= createTree(rootNode, null);
     
        }
     
        //methode recursive
        public TreeNode createTree(Service treeObj, TreeNode rootNode) {
            TreeNode newNode = new DefaultTreeNode(treeObj, rootNode);
     
            List<Service> childNodes1 = parametreService.getServiceChildNode(treeObj.getIdservice());
     
            for (Service tt : childNodes1) {
                TreeNode newNode2 = createTree(tt, newNode);
            }
     
            return newNode;
        }
    }
    J'ai deux pacquages (dao et service) ou j’implémente mes méthodes
    pacquage DAO :
    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
     
    public interface ParametreDao {
     
        //Service
     
        public List<Service> getAllListeService();  // récupération de tous les service dans une liste
        public Service getServiceRootNode(); // récupération des nœuds roots
        public List<Service> getServiceChildNode(Integer idpere);
     
    }
     
    public class ParametreDaoImpl extends  CrudImpl implements ParametreDao {     
     
     
        @Override
        public List<Service> getAllListeService() {
            return   em.createQuery("SELECT s FROM service s").getResultList();
        }
     
        @Override
        public  Service  getServiceRootNode() {
            List<Service> list = em.createQuery("SELECT s FROM Service s WHERE s.idservicepere=0").getResultList();
     
            if (list == null || list.isEmpty()) {
                return null;
            }
            return list.get(0);
        }
     
        @Override    
        public List<Service> getServiceChildNode(Integer idperee){
            return em.createQuery("SELECT s FROM Service s WHERE  s.idservicepere = :idservicepere").setParameter("idservicepere", idperee).getResultList();;
     
        }
    }

    pacquage Service
    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 interface ParametreService {
     
        //Service
     
        public List<Service> getAllListeService();  // récupération de tous les service dans une liste
        public Service getServiceRootNode(); // récupération des nœuds roots
        public List<Service> getServiceChildNode(Integer idpere);
     
    }
     
    public class ParametreServiceImpl extends CrudImpl implements ParametreService {
        @Inject
        private ParametreDao parametreDao;
     
     
        @Override
        public List<Service> getAllListeService(){
            return parametreDao.getAllListeService();
        }
        @Override
        public Service getServiceRootNode(){
            return parametreDao.getServiceRootNode();
        }
        @Override
         public List<Service> getServiceChildNode(Integer idpere){
             return parametreDao.getServiceChildNode(idpere);
         } 
     
     
     
    }

  6. #6
    Membre chevronné Avatar de jeffray03
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2008
    Messages
    1 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 501
    Points : 2 120
    Points
    2 120
    Par défaut
    salut,
    voici ce que j´ai fait:
    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
     
    @Stateless
    public class ServicesService {
     
    	@PersistenceContext(unitName = "Service_DataSource")
    	EntityManager em;
     
    	@SuppressWarnings("unchecked")
    	public List<Service> getRootService()
    	{
    		Query query = em.createQuery("select s from Service s where s.idservicepere = ?1");
    		query.setParameter(1, 0);
    		List<Service> list = query.getResultList();
    		return list;
    	}
     
    	public Service findServiceByIdService(Integer id)
    	{
    		Query query = em.createQuery("select s from Service s where s.idservicepere = ?1", Service.class);
    		query.setParameter(1, id);
    		Service service = (Service) query.getSingleResult();
    		return service;
    	}
     
    	@SuppressWarnings("unchecked")
    	public List<Service> getChildNodes(Integer id)
    	{
    		Query query = em.createQuery("select s from Service s where s.idservicepere = ?1");
    		query.setParameter(1, id);
    		List<Service> list = query.getResultList();
    		return list;	
    	}
    }
    et dans la classe :
    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
     
    @ManagedBean(name="ttBasicView")
    @ViewScoped
    public class ServiceBean {
    	 private TreeNode rootNode;
     
    	    private TreeNode selectedNode;
     
    	    @EJB
    	    private ServicesService services;
     
    	    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;
    		}
    		@PostConstruct
    	    public void init() {
     
    	        List<Service> root = services.getRootService();
     
    	        rootNode = new DefaultTreeNode("Root", null);
     
    	        for(Service service : root)
    	        {
     
    	        TreeNode t1 = createTree(service, rootNode);
    	        }
     
     
    	    }
    		private TreeNode createTree(Service root, TreeNode rootNode) {
    			 TreeNode newNode = new DefaultTreeNode(root, rootNode);
     
    		        List<Service> childNodes1 = services.getChildNodes(root.getIdservice());
     
    		        for (Service tt : childNodes1) {
    		            TreeNode newNode2 = createTree(tt, newNode);
    		        }
     
    		        return newNode;
    		}
    		public ServicesService getServices() {
    			return services;
    		}
    		public void setServices(ServicesService services) {
    			this.services = services;
    		}
     
     
    }
    et cela devrait marcher.
    Eric

  7. #7
    Membre habitué
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2007
    Messages
    310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

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

    Informations forums :
    Inscription : Mars 2007
    Messages : 310
    Points : 133
    Points
    133
    Par défaut
    Merci bien jeffray03!
    j'ai adapté ton code mon projet et ça marche .
    une étapede gagner.
    Merci à toi!

  8. #8
    Nouveau Candidat au Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mai 2016
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mai 2016
    Messages : 1
    Points : 1
    Points
    1
    Par défaut treeTable
    j'aimerai voir la partie vue svp je veux faire la même chose mais j'ai des blocus

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

Discussions similaires

  1. [MySQL] Afficher les données d'une table dans un menu déroulant
    Par MartialBalet dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 10/06/2016, 17h32
  2. Réponses: 6
    Dernier message: 05/05/2014, 11h11
  3. [OpenOffice][Base de données] Afficher les données d'une table dans un formulaire
    Par Milapyl dans le forum OpenOffice & LibreOffice
    Réponses: 1
    Dernier message: 05/03/2014, 22h31
  4. [MySQL] afficher les données d'une table mysql
    Par faamugol dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 30/09/2007, 20h04
  5. [MySQL] afficher les données d'une table
    Par scarecrow1 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 13/11/2006, 19h07

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