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

Struts 1 Java Discussion :

Afficher un ArrayList sous forme d'une tableau HTML


Sujet :

Struts 1 Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 17
    Par défaut Afficher un ArrayList sous forme d'une tableau HTML
    Bonjour,

    J'ai un Arraylist qui contient une liste d'objets "Category". Une category est composé d'un nom et d'une image. J'aimerai afficher 4 categories dans chaque ligne du tableau html. Mais je n'arrive pas a obtenir ce que je souhaite.

    Actuellement, j'utilise un logic:iterate pour parcourir mon ArrayList comme ceci :

    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
     
    <logic:iterate type="beans.Category" scope="session" id="category" indexId="index" name="categories">
    			<logic:equal name="index" value="0">
    				<tr>
    			</logic:equal>
    			<td>
    				<div class="cat" onclick="window.location.replace('contactAction.do');">
    					<img src="${category.imageDir}${category.imageName}" alt="${category.name}" border="0" /><br />
    					<span><bean:write name="category" property="name" /></span>
    				</div>
    			</td>
    			<logic:equal name="index" value="3">
    				</tr>
    			</logic:equal>
    		</logic:iterate>
    Le soucis, c'est que n'arrive pas a inserer la balise "<tr></tr>" au bon endroit. (C'est a dire une fois tout les 4 element). Auriez vous une idée?

    Merci.

  2. #2
    Invité
    Invité(e)
    Par défaut
    D'après ton code :
    - tu positionnes un <tr> seulement pour l'élément d'index 0
    - tu positionnes un </tr> seulement pour l'élément d'index 3

    Forcément c'est pas ce que tu veux.

    Il faut plutot que tu mettes un <tr> à chaque fois que (index modulo 4) = 0
    et un </tr> chaque fois que (index modulo 4) = 3
    Penses quand même à combler les <td> et à fermer le <tr> si ta liste ne contient pas un multiple de 4 éléments (ex: 6 élements -> une ligne de 4 + une ligne de 2 + 2 <td> vides)

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 17
    Par défaut
    Ouaip, mais justement, comment tu fait un "index modulo 4" avec les taglibs?

  4. #4
    Expert confirmé

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Par défaut
    Voici une solution avec la JSTL :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <c:forEach items="${categories}" var="category" varStatus="status">
    	<c:if test="${status.index % 4 == 0}"> 
    		<tr> 
    	</c:if> 
    		<td><c:out value="${category.name}"/></td>
    	<c:if test="${status.index % 4 == 3}"> 
    		</tr> 
    	</c:if> 
    </c:forEach>

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    185
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 185
    Par défaut
    essaie cela ça devrai marcher :

    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
     
    <logic:iterate type="beans.Category" scope="session" id="category" indexId="index" name="categories">
    <% if(index%4 == 0) { %>		
    <tr>
    <%}%>
    			<td>
    				<div class="cat" onclick="window.location.replace('contactAction.do');">
    					<img src="${category.imageDir}${category.imageName}" alt="${category.name}" border="0" /><br />
    					<span><bean:write name="category" property="name" /></span>
    				</div>
    			</td>
    <% if(index%4 == 0) { %>		
    </tr>
    <%}%>
     
    					</logic:iterate>

  6. #6
    Membre Expert Avatar de maxf1
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 229
    Par défaut
    Et faudrait regarder les postes qu'il y a deja un peu. ON a eu la meme question pour 5 elements il y a meme pas une semaine....

Discussions similaires

  1. Afficher les données sous forme d'une liste
    Par j-gat dans le forum Développement Web en Java
    Réponses: 0
    Dernier message: 28/11/2010, 15h40
  2. Afficher des données sous forme d'un tableau.
    Par Khaoula.85 dans le forum MFC
    Réponses: 3
    Dernier message: 29/10/2009, 14h56
  3. [Joomla!] Créer une table et l'afficher dans Joomla sous forme de tableau
    Par sago974 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 23/02/2009, 16h34
  4. Problème de présentation des données sous forme d'un tableau HTML
    Par LaurentDRE dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 05/08/2008, 21h49
  5. [MySQL] Afficher les résultats sous forme d'un tableau
    Par Invité dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 01/06/2008, 22h53

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