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

Servlets/JSP Java Discussion :

Un tableau avec nb de colonnes et de lignes dans un HashMap


Sujet :

Servlets/JSP Java

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2007
    Messages : 120
    Par défaut Un tableau avec nb de colonnes et de lignes dans un HashMap
    Bonjour,

    Je crée un tableau dont le nom des colonnes correspond aux clés d un HashMap et les valeurs dans les lignes au champ valeur de ma HashMap.

    Voici une modélisation simplifiée de ma structure pour que vous compreniez mon problème :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    List<MesObjets> 
     - date
     - hashMap clé/valeur

    Pour créer ma ligne de titre et ma première ligne je fais :
    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
     
    <% 
    [...]
    List<MesObjets> obj = liste.getMesObjets();
    Iterator itLignes = obj.iterator();
     
    if(itLignes.hasNext()){
    //je crée la ligne de titre + la première ligne
    %>
     
    <tr style="CenterWhiteLabel">
    <td>Date</td>
    <% //on crée la boucle pour les colonnes
    MesObjets maLigne = (MesObjets)itLignes.next();
    HashMap Map = maLigne.getListTextValeur();
    Set lesEntrees = Map.entrySet() ;
    Iterator itCol = lesEntrees.iterator() ;
    while ( itCol.hasNext()) {
    Map.Entry e=(Map.Entry) itCol.next();
    %>
    <td><%=e.getKey()%></td>
    <%
    }
    itCol.remove();
    %>
    </tr>
    <!-- premiere ligne -->
    <tr><td><%=maLigne.getDate()%></td>
    <%
    //pour la premiere ligne de valeurs
    Iterator itCol2 = lesEntrees.iterator() ;
    while ( itCol2.hasNext()) {
    Map.Entry e=(Map.Entry) itCol2.next();
    %>
    <td><%=e.getValue()%></td>
    <%
    }
    itCol2.remove();
    %>
    </tr>
    Lors de l'affichage rien ne va.
    J'ai juste une colonne nommée date qui apparait avec dans la première ligne la date. Mais mes colonnes "dynamiques" n'apparaissent pas.
    Cependant je suis sure d avoir les bonnes valeurs dans les objets e car en mode debug j ai bien les bonnes valeurs dans Key et Value lorsque je parcours les while.


    Merci d avance de votre aide.

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2007
    Messages : 120
    Par défaut
    En fait a priori j ai un souci dans le parcours de mon hashmap.

    En effet, voici comment je l'ai rempli ;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Key    -    Value
    ColonneA   -  1
    ColonneB   -  2 
    ColonneC   -  3 
    ColonneD   -  4 
    ColonneE   -  5
    ColonneF   -  6 
    ColonneG   -  7 
    ColonneH   -  8
    Et voici ce que je trouve dans mon fichier de log :
    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
     
     
    <tr style="CenterWhiteLabel">
    <td>Date</td>
    <td>ColonneD</td>
    <td>ColonneC</td>
    <td>ColonneB</td>
    <td>ColonneA</td>
    </tr>
    <tr>
    <td>Mon Aug 04 12:34:28 CEST 2008</td>
    <td>8</td>
    <td>7</td>
    <td>6</td>
    </tr>
    J'ai donc plusieurs problèmes :
    1. je ne comprends pas pourquoi ma HashMap est tronquée dans son parcours
    2. je ne comprends pas poourquoi il ne la parcourt pas toujours dans le même sens
    3. mon tableau ne s'affiche pas correctement et cela est certainement du en parti au fait que j ai pas le même nombre de colonnes pour chaque ligne

  3. #3
    Membre émérite
    Profil pro
    Développeur Back-End
    Inscrit en
    Avril 2003
    Messages
    782
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Back-End

    Informations forums :
    Inscription : Avril 2003
    Messages : 782
    Par défaut
    Bonjour,

    pourquoi le "itCol.remove();" ?

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2007
    Messages : 120
    Par défaut
    Je pense qu il ne sert à rien.
    Je l avais au départ mis car j utilisais la même variable pour les deux boucles. Mais ayant changé ma façon de faire je peux le supprimer.

  5. #5
    Membre émérite
    Profil pro
    Développeur Back-End
    Inscrit en
    Avril 2003
    Messages
    782
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Back-End

    Informations forums :
    Inscription : Avril 2003
    Messages : 782
    Par défaut
    Il serait peut-être bon de vérifier le contenu de maLigne.getListTextValeur(); en l'ajoutant dans la trace

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2007
    Messages : 120
    Par défaut
    oui c est ce que je vais faire ...
    Mais j ai eu un pb de memoire du coup je viens de modifier mon parametrage Tomcat.

    Depuis que j ai supprimer les remove j ai 4 valeurs de chaque coté mais c est pas pour cela que quelque chose s affiche !

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2007
    Messages : 120
    Par défaut
    Bon, maintenant j ai bien ce qu il faut dans mes variables par contre, la hashMap n apparait pas triée comme je l avais initialisée. Je ne comprends pas vraiment pourquoi et comme il faut que mes colonnes soient triées la colonneA avant la colonneB je suis un peu embetée !

    Niveau affichage, j ai toujours que la date qui s affiche de toute façon

    Voici ce que j ai dans les logs :
    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
     
    Aug 4, 2008 3:05:56 PM org.apache.myfaces.renderkit.html.HtmlGridRendererBase renderChildren
    WARNING: PanelGrid locationTreeId:0:3:_id7 has not enough children. Child count should be a multiple of the columns attribute.
    Aug 4, 2008 3:05:56 PM org.apache.myfaces.taglib.UIComponentBodyTagBase doEndTag
    WARNING: Component with id 'myFormId:data' (org.apache.myfaces.taglib.html.HtmlPanelGroupTag tag) and path : {Component-Path : [Class: org.ajax4jsf.framework.ajax.AjaxViewRoot,ViewId: /pages/oil.jsp][Class: javax.faces.component.html.HtmlForm,Id: myFormId][Class: javax.faces.component.html.HtmlPanelGrid,Id: _id14][Class: javax.faces.component.html.HtmlPanelGroup,Id: data]}renders it's children, but has embedded JSP or HTML code. Use the <f:verbatim> tag for nested HTML. For comments use <%/* */%> style JSP comments instead of <!-- --> style HTML comments.
     BodyContent:
    <table style="width:100%">
    <tr style="CenterWhiteLabel">
    <td>Date</td>
    <td>ColonneD</td>
    <td>ColonneH</td>
    <td>ColonneE</td>
    <td>ColonneC</td>
    <td>ColonneB</td>
    <td>ColonneG</td>
    <td>ColonneA</td>
    <td>ColonneF</td>
    </tr>
     
    <tr>
    <td>Mon Aug 04 15:05:55 CEST 2008</td>
    <td>4</td>
    <td>8</td>
    <td>5</td>
    <td>3</td>
    <td>2</td>
    <td>7</td>
    <td>1</td>
    <td>6</td>
    </tr>
    </table>

  8. #8
    Membre émérite
    Profil pro
    Développeur Back-End
    Inscrit en
    Avril 2003
    Messages
    782
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Back-End

    Informations forums :
    Inscription : Avril 2003
    Messages : 782
    Par défaut
    Concernant le trie c'est normal, une HashMap n'a pas de notion d'ordre (c'est un dictionnaire) les entrées sont classées de façon que la Map puisse rapidement retrouver la valeur associée à la clef.

  9. #9
    Membre émérite
    Profil pro
    Développeur Back-End
    Inscrit en
    Avril 2003
    Messages
    782
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Back-End

    Informations forums :
    Inscription : Avril 2003
    Messages : 782
    Par défaut
    pour des map triées, il faut regarder du coté de LinkedHashMap

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2007
    Messages : 120
    Par défaut
    Moi je pensais que bêtement il me les ressortirait dans l'ordre dans lequel je lui avais rentré ...
    Mais je dirais que pour l'instant ceci n'est qu'une goutte dans l'océan de mon bug ... vu que pour le moment le seul endroit où cela s'affiche c'est le fichier de log !
    Je regarde néanmoins la classe dont tu me parles car pour pouvoir afficher les lignes suivantes va bien me falloir respecter un ordre pour faire matcher le titre des colonnes avec les valeurs.

  11. #11
    Membre émérite
    Profil pro
    Développeur Back-End
    Inscrit en
    Avril 2003
    Messages
    782
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Back-End

    Informations forums :
    Inscription : Avril 2003
    Messages : 782
    Par défaut
    Comment est gérér l'ecriture dans les log ?

  12. #12
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2007
    Messages : 120
    Par défaut
    ben c est les logs bateau de Tomcat ... C est pas moi qui les gère malheureusement !

  13. #13
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2007
    Messages : 120
    Par défaut
    J'ai remplacé tous mes HashMap par des LinkedHashMap ...
    Maintenant je vois bien dans les logs que tout est bien trié mais je suis toujours aussi embêtée pour l'affichage.

  14. #14
    Membre émérite
    Profil pro
    Développeur Back-End
    Inscrit en
    Avril 2003
    Messages
    782
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Back-End

    Informations forums :
    Inscription : Avril 2003
    Messages : 782
    Par défaut
    Regarde dans le source de la page généré, car il peut s'agir d'un problème de css. (le code est bien généré mais pas rendu)

  15. #15
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2007
    Messages : 120
    Par défaut
    C'est fou comme c est pas propre un code generé par jsp ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <table id="oilFormId:resultDataTableId" border="1" cellpadding="0" cellspacing="0" frame="box" width="100%">
    <thead>
    <tr><th class="HeaderRow"><table border="0"><tbody><tr><td><span class="CenterWhiteLabel">Date</span></td></tr>
    </tbody></table></th></tr></thead>
    <tbody id="myFormId:resultDataTableId:tbody_element">
    <tr><td>Aug 4, 2008</td></tr></tbody></table>
    <input id="myFormId:refreshId" name="myFormId:refreshId" type="submit" onclick="clear_myFormId();document.forms['myFormId'].elements['autoScroll'].value=getScrolling();" style="display:none" /><table border="0" width="100%" style="valign:top;height:40px" class="CenterBlackLabel"><tbody><tr><td></td></tr>
    </tbody></table></span></td></tr>
    </tbody></table>
    Aucune trace de mes HashMap ...

  16. #16
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2007
    Messages : 120
    Par défaut
    Dans les logs y a une histoire de verbatim ...
    renders it's children, but has embedded JSP or HTML code. Use the <f:verbatim> tag for nested HTML
    Pensez vous que ceci pourrait solutionner mon problème et si oui comment faire ?
    je n'ai jamais utiliser ceci ...

    Merci fnobb de l'aide que tu m'apporte et merci aux autres de jeter un coup d'oeil pour me sortir de ce pétrin

  17. #17
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2007
    Messages : 120
    Par défaut
    Effectivement, il semblerait que ceci me permette un affichage de mes données ... Mais je ne maitrise pas du tout l'utilisation de ces balises et du coup je ne suis pas très douée pour la mise en forme de mon tableau.

    je creuse et je donnerai mes conclusions à la fin histoire d'aider ceux qui seraient perdus comme moi dans quelques temps.

  18. #18
    Membre émérite
    Profil pro
    Développeur Back-End
    Inscrit en
    Avril 2003
    Messages
    782
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Back-End

    Informations forums :
    Inscription : Avril 2003
    Messages : 782
    Par défaut
    Bonjour,

    effectivement le tag verbatim semble servir à inclure du code html dans le rendu de la page
    http://www.roseindia.net/jsf/verbatim.shtml

    mais là désolé je n'utilise pas JSF.

  19. #19
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2007
    Messages : 120
    Par défaut
    J'ai donc mis la balise <f:verbatim> avant le début de mon tableau <table> et </f:verbatim> juste après </table>.
    A l'intérieur de ces balises j'ai donc tout le code html de mon tableau avec le code java associé.

    Merci fnobb pour ton aide ... C'est sympa d'avoir pris du temps pour moi !

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

Discussions similaires

  1. Tableau avec image et colonne de texte
    Par demu73 dans le forum Mise en page CSS
    Réponses: 4
    Dernier message: 21/02/2015, 23h36
  2. [2012] creation dun tableau avec condition sur colonne est index
    Par Lafleur2012 dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 25/03/2014, 10h03
  3. [WD14] Alimentation d'une colonne d'une tableau avec une autre colonne
    Par Deep Lowee dans le forum WinDev
    Réponses: 2
    Dernier message: 23/01/2013, 17h44
  4. [MySQL] comment afficher un tableau avec tri par colonne ?
    Par tut dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 26/04/2011, 17h19
  5. Tableau avec beaucoup de colonnes
    Par night59 dans le forum BIRT
    Réponses: 5
    Dernier message: 01/07/2007, 11h48

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