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 de chargement d'une datatable en Java EE


Sujet :

JSF Java

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2016
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2016
    Messages : 7
    Points : 5
    Points
    5
    Par défaut Problème de chargement d'une datatable en Java EE
    Bonjour !
    J'ai un soucis que j'aimerais partager avec vous.
    J'essaie de remplir ma Datatable aves les données d'une table de ma base de données oracle.

    // Mon formulaire

    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
     
    <?xml version="1.0" encoding="UTF-8"?>
    <!--
    To change this license header, choose License Headers in Project Properties.
    To change this template file, choose Tools | Templates
    and open the template in the editor.
    -->
    <!DOCTYPE html>
    <html  xmlns="http://www.w3.org/1999/xhtml"
           xmlns:ui="http://java.sun.com/jsf/facelets"
           xmlns:rich="http://richfaces.org/rich"
           xmlns:h="http://java.sun.com/jsf/html"
           xmlns:p="http://primefaces.org/ui"
           xmlns:f="http://java.sun.com/jsf/core">
     
        <ui:composition template="../template/simptemplate.xhtml">
            <ui:define  name="content">
                <h:form id="frmAttributaire">
                    <div id="toolbar">
                        <h:commandButton value="Quitter" action="#{dacView.quitter}" />
                    </div>
                    <h:messages showDetail="true" id="msgs" infoClass="info" errorClass="error"/> <br/>
                    <h:panelGrid columns="4">
                        <p:commandButton value="Choisir fournisseur" oncomplete="dlg_choix_frs.show();" />
                        <p:commandButton value="Rechercher Fournisseur" action="#{dacView.frsRecherche}" update=":frmAttributaire:richAttrib" />
                        <p:commandButton value="Déclarer lot infructueux" action="#{dacView.declarerLotInfructueux()}" onclick="if (!confirm('Déclarer le lot infructueux ; vous confirmez ?'))
                                    return false;"/>
                    </h:panelGrid>
                    <rich:panel id="richAttrib">
                        <h:outputLabel value="Numéro IFU :"/> <h:outputLabel value="#{dacView.fournisseurBP.ifu}"/><br/>                   
                        <h:outputLabel value="Raison sociale :"/>  <h:outputLabel value="#{dacView.fournisseurBP.raisonSocial}"/> <br/>
                        <h:outputLabel value="Sigle :"/>  <h:outputLabel value="#{dacView.fournisseurBP.sigle}"/><br/>
                        <p:commandButton value="Attribuer"  action="#{dacView.attribuerLot}"/>
                    </rich:panel>
     
                    <p:dialog header="Choix d'un fournisseur" widgetVar="dlg_choix_frs" resizable="true" showEffect="clip" hideEffect="fade" modal="true"
                              style="font-size: 10pt;" closable="true" >
                        <h:form id="choix_frs_form">
                            <h:messages id="msg" infoClass="info" errorClass="error"/>
     
                            <p:dataTable id="table_frs_libre" value="#{dacView.fournisseursBP}" var="frsBP" emptyMessage="Aucun fournisseur trouvé..."
                                         pageLinks="3" paginatorAlwaysVisible="false" paginatorPosition="top" rows="10" paginator="true">
                                <p:column>
                                    <f:facet name="header">
                                        <h:outputText value=" " />
                                    </f:facet>
                                    <p:commandLink value="Select." style="font-size: 7pt;"  update=":frmAttributaire:richAttrib" oncomplete="dlg_choix_frs.hide()"
                                                    >
                                        <f:setPropertyActionListener value="#{frsBP}" target="#{dacView.fournisseurBP}"/>
                                    </p:commandLink>
                                </p:column>
     
                                <p:column>
                                    <f:facet name="header">
                                        <h:outputText value="Code" />
                                    </f:facet>
                                    <h:outputText value="#{frsBP.codeFrs}" />
                                </p:column>
                                <p:column>
                                    <f:facet name="header">
                                        <h:outputText value="Raison sociale" />
                                    </f:facet>
                                    <h:outputText value="#{frsBP.raisonSocial}" />
                                </p:column>
                                <p:column  filterBy="#{frsBP.sigle}">
                                    <f:facet name="header">
                                        <h:outputText value="Sigle" />
                                    </f:facet>
                                    <h:outputText value="#{frsBP.sigle}" />
                                </p:column>
                                <p:column filterBy="#{frsBP.ifu}">
                                    <f:facet name="header">
                                        <h:outputText value="IFU" />
                                    </f:facet>
                                    <h:outputText value="#{frsBP.ifu}" />
                                </p:column>
                                <p:column filterBy="#{frsBP.adresse}">
                                    <f:facet name="header">
                                        <h:outputText value="Adresse" />
                                    </f:facet>
                                    <h:outputText value="#{frsBP.adresse}" />
                                </p:column> 
                            </p:dataTable>
                        </h:form>
                    </p:dialog>
                </h:form>
            </ui:define>
        </ui:composition>
    </html>
    //
    La requête dans FournisseurDao.java (Il s'agit de chargeur tous les fournisseurs de ma BD qui valent 90 000 fournisseurs:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
            public List<Fournisseur> lesNonSoumissionnairesDuDacBP(){
            return em.createQuery("SELECT f FROM Fournisseur f ")
                    .getResultList();
        }

    Dans le Bean :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    //1. Déclaration des variables (je previens que les getters existent)
     
        private Fournisseur fournisseurBP;
        private List<Fournisseur> fournisseursBP;
     
    //2. La methode sensée me retourner les fournisseurs dans le formulaire
     
        public List<Fournisseur> getFournisseursBP() {
         fournisseursBP = frsDao.lesNonSoumissionnairesDuDacBP();
            return fournisseursBP;
        }
    Mon problème :
    1. Je n'arrive pas à charger mes fournisseurs dans la dataTable au niveau du p:dialog du formulaire
    2. Comment ressoudre cela (le fait de charger environ 100 000 lignes ?

    Merci beaucoup pour vos aides.

  2. #2
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Citation Envoyé par Ishaaq Voir le message
    2. Comment ressoudre cela (le fait de charger environ 100 000 lignes ?
    Ben tu évites de le faire . D'abord parce qu'aucun utilisateur n'est capable de lire 100.000 lignes. Ensuite parce que tu va tuer ton serveur. RichFaces dispose d'un composant (DataScroller) pour afficher des tables de données page par page, histoire de ne pas charger toute ta base de données en une fois. Et JSF est capable de ne charger qu'une partie des données, en utilisant setMaxResults / setFirstResult.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2016
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2016
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    Bonjour Tchize_ !
    Merci pour ta réaction. J'essaie de voir comment mettre en oeuvre avec mon projet.
    Si tu as un tuto explicite de mise en oeuvre de ces solution, je suis preneur.

  4. #4
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    Non mais là, il utilise primefaces...
    Le <p:dataTable> est conçu pour gérer le chargement fainéant très simplement via l'attribut "lazy".
    Dans ce cas, la classe associée au dataTable doit implémenter LazyDataModel.
    Voir ici l'exemple de primefaces...
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Citation Envoyé par OButterlin Voir le message
    Non mais là, il utilise primefaces...
    En fait il utilise les deux, je vois aussi des tags richfaces, d'où ma confusion. Et je pense pas que ces deux librairies aiment travailler ensemble

    Pis finalement le principe reste le même

  6. #6
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    Et je pense pas que ces deux librairies aiment travailler ensemble
    Tu m'étonnes

    C'est même surprenant comme choix de mixer une bibliothèque totalement obsolète (Richfaces) avec une bibliothèque ultra complète (Primefaces)...
    Je suppose que ce sont des évolutions d'une ancienne application partie sur Richfaces...
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. Problème de chargement d'une page web Java
    Par poitou82 dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 21/10/2010, 14h38
  2. Réponses: 3
    Dernier message: 19/05/2006, 15h54
  3. [VB] Problème de chargement d'une DLL
    Par Elijha dans le forum Windows Forms
    Réponses: 3
    Dernier message: 10/05/2006, 09h24
  4. Problème de chargement d'une servlet
    Par jh0483 dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 12/04/2006, 12h52
  5. problème de chargement d'une Applet
    Par cladsam dans le forum Applets
    Réponses: 1
    Dernier message: 31/01/2006, 23h04

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