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 :

[JSP] Parcours et Accès à un élément particulier d'une collection


Sujet :

Struts 1 Java

  1. #1
    Membre régulier
    Inscrit en
    Avril 2003
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 84
    Points : 70
    Points
    70
    Par défaut [JSP] Parcours et Accès à un élément particulier d'une collection
    Bonjour,

    je n'arrive pas à trouver d'infos sur comment accéder à un item d'une collectino, et à parcourir seulement une partie des items d'une collection.

    Exemples :

    Je trouve le bout de code ci-dessous tout pourri, mais il marche et me permet d'afficher tous les éléments d'une liste sauf le dernier.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    	<% int nbEltMax = 0; %>
    	<logic:iterate name="filariane" id="titre">
    	    <% nbEltMax++; %>
    	</logic:iterate>  	
    	<% int nbElt = 0; %>   			
    	<logic:iterate name="filariane" id="titre">
    	    <% if (nbElt < nbEltMax - 1) { %>
    	    <bean:message name="titre" />
    	    <% 	}
    	          nbElt++;							
                %>
    	</logic:iterate>
    Pareillement pour ce bout de code qui me permet d'afficher le dernier élément d'une liste.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    	<% int nbEltMax = 0; %>
    	<logic:iterate name="filariane" id="titre">
                 <% nbEltMax++; %>
    	</logic:iterate>  	
    	<% int nbElt = 0; %>  
    	<logic:iterate name="filariane" id="titre">		
    		<% if (nbElt == nbEltMax - 1) { %>
    		<bean:message name="titre" /> 
    		<% }
    		      nbElt++;
    		%>	
    	</logic:iterate>

    Une solution évidente serait d'avoir deux variables, une pour le dernier élément de ma liste, et une autre contenant la liste de mes n-1 premiers éléments.

    Mais imaginons qu'on conserve l'unique variable "filariane".... que peut-on faire pour coder mon besoin de manière plus propre ?

    Merci d'avance.

  2. #2
    Expert éminent

    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
    Points : 7 778
    Points
    7 778
    Par défaut
    Déjà, tu peux mettre la taille de la collection dans une variable via le tag bean:size :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <bean:size name="filariane" id="taille"/>
    ce qui évite de coder un logic:iterate pour connaître le nombre d'éléments de la liste.

    Après, à partir de cette variable, tu peux facilement calculer la taille-1 et la spécifier dans l'attribut length du premier tag logic:iterate pour afficher tous les éléments de la liste sauf le dernier.
    Et ensuite, tu peux également déterminer l'indice du dernier élément et le préciser dans l'attribut offset du deuxième tag logic:iterate pour afficher seulement le dernier élément de la liste.

  3. #3
    Expert éminent

    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
    Points : 7 778
    Points
    7 778
    Par défaut
    En fait, en utilisant les EL, c'est beaucoup plus simple et surtout plus propre :

    mettre la taille de la collection dans la variable taille :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <bean:size name="filariane" id="taille"/>
    Affichage de tous les éléments sauf le dernier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <logic:iterate name="filariane" id="titre" length="${taille-1}">
       ...
    </logic:iterate>
    Affichage du dernier élément :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <logic:iterate name="filariane" id="titre" offset="${taille-1}">
      ...
    </logic:iterate>
    EDIT : J'ai oublié de préciser que ceci fonctionne en J2EE 1.4 (Servlet 2.4,JSP 2.0).
    Si tu n'es pas en J2EE 1.4, il faut utiliser la tld struts-logic-el.tld à la place de la tld struts-logic.tld.

Discussions similaires

  1. le binding particulier d'une collection à un DataGrid
    Par etiennegaloup dans le forum Windows Presentation Foundation
    Réponses: 8
    Dernier message: 27/09/2011, 22h53
  2. Réponses: 4
    Dernier message: 17/12/2009, 13h26
  3. Réponses: 0
    Dernier message: 02/07/2009, 18h00
  4. [DOM] Accès à un noeud particulier ayant une valeur d'attribut particulière
    Par Mil17 dans le forum Format d'échange (XML, JSON...)
    Réponses: 3
    Dernier message: 02/07/2008, 12h37
  5. Accéder à un élément particulier d'une Map
    Par oc_alex86 dans le forum Collection et Stream
    Réponses: 4
    Dernier message: 04/05/2007, 16h14

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