Chargement simultané des données

J'ai plusieurs données disponibles et j'utilise ajax pour charger les données DataTables. J'ai mappé un bean géré avec DataTables et, via une mise à jour ajax, je peux accéder à la base de données et obtenir / récupérer les enregistrements de la base de données. Le problème est que peu de tables peuvent avoir peu d'enregistrements à afficher et quelques-uns ont plus.Je veux montrer les enregistrements qui sont disponibles en premier lieu à la place de toutes les tables à charger. Veuillez suggérer. Merci d'avance.

    Dans la plupart des grandes applications de données, ce scénario est important, en particulier lorsque vous disposez de données avec une grande donnée à récupérer à partir de la base de données, c'est essentiellement un moyen de déchargement.

    Avant de répondre à cette question, je voudrais souligner que l'utilisation des getters / setters pour une logique / extraction est une mauvaise idée, car ils sont appelés à plusieurs reprises pendant le cycle de vie.

    Pas:

    • Séparez la logique des getters à d'autres méthodes d'extraction / génération.

      public void fetchSpreadList() { //fetch from DB and set spreadList setSpreadList(db.findSpreadList()); } public void fetchTransList() throws Exception { //fetch from DB and set TransList setTransList(db.findTransList()); } //getters public List<SpreadInformationDTO> getSpreadList() { return spreadList; } public List<TransHistoryDataDTO> getTransList() { return transList; } 
    • Recherche des données en utilisant remoteCommand

        <p:remoteCommand name="fetchSpread" actionListener="#{transactionMB.fetchSpreadList}" update=":form1:spreadInfo" onstart="preTableIsLoading(PF('widVarMnmsInfo'))" oncomplete="postTableIsLoading(PF('widVarMnmsInfo'))"> </p:remoteCommand> <p:remoteCommand name="fetchTrans" actionListener="#{transactionMB.fetchTransList}" update=":form2:withdrawInfo" onstart="preTableIsLoading(PF('widVarBrmOrderInfo'))" oncomplete="postTableIsLoading(PF('widVarBrmOrderInfo'))"> </p:remoteCommand> 

      Chaque télécommande récupère les données une fois la page chargée et met à jour la base de données. onstart et oncomplete here sont des indicateurs de chargement, en passant un widgetVar à preTableIsLoading et postTableIsLoading . Remarque: si vous utilisez PF 3.5 ou inférieur, passez le raccourci widgetVar sans PF .

    • preTableIsLoading et postTableIsLoading (javascript)

       function preTableIsLoading(widget) { widget.jq.find('.ui-datatable-empty-message td').hide(); widget.jq.find('.ui-datatable-empty-message') .append('<span class="tableLoadingSpan" />'); } function postTableIsLoading(widget) { widget.jq.find('.ui-datatable-empty-message td').show(); widget.jq.find('.ui-datatable-empty-message span').remove(); } 

      Lorsque la récupération commence, cachez le message vide et ajoutez-le un gif de chargement, lorsque l'extraction est terminée, affichez le message vide (si la donnée est vide) et supprimez l'indicateur gif de chargement.

    • Indicateur Gif de chargement (CSS)

       .tableLoadingSpan { background: url("#{resource['/images/loaderTables.gif']}"); display: block; height: 40px; margin-top: 20px; background-repeat: no-repeat; } 

      ChargeurTables.gif

    La dernière chose à envisager d'utiliser un chargement paresseux dans vos tables.

    Modifier:

    Afin d'éviter l'erreur d'objet jQuery undefined dans le javascript, supprimez autoRun des RemoteCommands (que j'ai déjà supprimé de cette réponse) et appelez le remoteCommands dans le $(document).ready() cette façon, vous vous assurez que le widgetVar est prêt à utiliser.

     $(document).ready(function() { //calling remoteCommands fetchSpread(); fetchTrans(); })