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 une liste d'objets dans une page jsp sur plusieurs colonnes


Sujet :

Struts 1 Java

  1. #1
    Membre à l'essai
    Développeur Java
    Inscrit en
    Août 2008
    Messages
    17
    Détails du profil
    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Août 2008
    Messages : 17
    Points : 14
    Points
    14
    Par défaut afficher une liste d'objets dans une page jsp sur plusieurs colonnes
    je voulais savoir c'est il y a un autre moyen pour afficher une liste d'articles dans une page "/liste.jsp" sans passer par l'action "/liste.do" qui passe une liste de type ArrayList comme paramètre à la page "/liste.jsp".
    j'ai eu le résultat en faisant une redirection vers "/liste.do" en cas ou la liste est null :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    <c:if test="${listeArticles==null}">
           <c:redirect url="/liste.do" />
    </c:if>
    <table>
       <c:forEach var="article" items="${listeArticles}">
        <tr>
          <td><c:out value="${article.id}" /></td>
          <td><c:out value="${article.nom}" /></td>
          <td><c:out value="${article.prix}" /></td>
       </tr>
      </c:foreach>
    </table>
    ....
    mais le plus important c'est pas que le résultat mais comment procédé correctement et profiter des fonctionnalité struts le maximum.
    merci pour votre aide d'avance.

    l'autre problème : comment afficher une mes articles sur plusieurs colonnes.

  2. #2
    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
    Je n'ai pas compris ton problème, peux-tu l'expliquer autrement ?

    (et pense à la balise [ code], bouton # de l'éditeur, merci...)
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre à l'essai
    Développeur Java
    Inscrit en
    Août 2008
    Messages
    17
    Détails du profil
    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Août 2008
    Messages : 17
    Points : 14
    Points
    14
    Par défaut
    ma page liste.jsp :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <table>
       <c:forEach var="article" items="${listeArticles}">
        <tr>
          <td><c:out value="${article.id}" /></td>
          <td><c:out value="${article.nom}" /></td>
          <td><c:out value="${article.prix}" /></td>
       </tr>
      </c:foreach>
    </table>
    mon code liste.do :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    public ActionForward execute(ActionMapping mapping, ActionForm form, 
    	HttpServletRequest request, HttpServletResponse response) 
    throws IOException, ServletException{	
    try{						
         // cette methode me renvoie toute la liste d'articles
          listeArticles = article.getAllArticles();
          request.getSession().setAttribute("listeArticles", listeArticles);
           return mapping.findForward("allListe");// vers liste.jsp
     }catch(Exception _ex){
          erreurs.add("Erreur d'obtention de la liste des articles : ");
          return mapping.findForward("afficherErreurs");// vers error.jsp
    }				
    }
    si je tape l'url http://localhost:8080/monApp/liste.do dans mon navigateur tous marche bien, par contre si je tape http://localhost:8080/monApp/liste.jsp directement j'obtiens une liste vide d'articles;
    j'ai régler le problème avec une redirection lorsque le paramètre
    listeArticles=null;

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <c:if test="${listeArticles==null}"
            <c:redirect url="/liste.do>
    </c:if>

    je veux savoir s'il y a une solution mieux que cela et si struts possède un truc pour gérer ca.

    ma deuxième question comment puis je afficher plusieurs articles dans une seule ligne.
    j'espère que je suis plus claire la.
    merci.

  4. #4
    Membre confirmé

    Inscrit en
    Juin 2005
    Messages
    1 155
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 1 155
    Points : 475
    Points
    475
    Par défaut
    par contre si je tape http://localhost:8080/monApp/liste.jsp directement j'obtiens une liste vide d'articles;
    Tu n'a pas à taper "http://localhost:8080/monApp/liste.jsp" !
    Tes jsp devraient être des ressources protégées et non accessible par conséquent.
    Struts a un point d'entrée unique qui est le contrôleur struts qui se charge de rediriger ta requête "http://localhost:8080/monApp/liste.do" vers l'action adéquate.
    Enfin sur ta jsp devrait normalement apparaitre le moins de code possible.

  5. #5
    Membre à l'essai
    Développeur Java
    Inscrit en
    Août 2008
    Messages
    17
    Détails du profil
    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Août 2008
    Messages : 17
    Points : 14
    Points
    14
    Par défaut
    merci jadey, je ne vais plus jamais taper http:/.../liste.jsp
    il me reste l'affichage sur plusieurs colonnes à l'aide de :
    <c:forEach var="aricle" items="${articles}">
    .....

    </c:forEach>

  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
    Pour mettre 2 enregistrements par ligne, il faudrait revoir l'algorithme de chargement.
    Il faudrait conditionner les balises <tr> et </tr> par un compteur (avec le cas particulier de la dernière occurrence dans le cas d'un nombre impair), dans l'idée, ce serait dans ce genre
    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
    <% int i = 0; %>
    
    <c:forEach var="article" items="${listeArticles}">
    
    <% if (i == 0) out.println("<tr>"); %>
    
     <td><c:out value="${article.id}" /></td>
     <td><c:out value="${article.nom}" /></td>
     <td><c:out value="${article.prix}" /></td>
    
    <% if (i++ == 1) { out.println("</tr>"); i = 0; } %>
     
    </c:foreach>
    
    <% if (i == 1) { out.println("</tr>"); i = 0; } %> // Cas nombre impair
    A+
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  7. #7
    Membre à l'essai
    Développeur Java
    Inscrit en
    Août 2008
    Messages
    17
    Détails du profil
    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Août 2008
    Messages : 17
    Points : 14
    Points
    14
    Par défaut
    Merci pour ta réponse OButterlin, ca bien marché juste j'ai convertis le code par les tag, j'ai utilisé une variable i, je l'incrémente a chaque itération et je compare le reste de la division par 2 pour l'affichage dans la même ligne, et voila le code final :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <c:set var="i" value="0" />
    <table>
    	<c:forEach var="article" items="${listeArticles}">		
    		<c:if test="${i%2==0}"><tr></c:if>	
    		<td><img src='ressources/images/articles/<c:out value="${article.photo}" />' /></td>
    		<c:set var="i" value="${i+1}" />		
    		<c:if test="${i%2==0}"></tr></c:if>		
    	</c:forEach>
    	<c:if test="${i%2==1}"><td></td></tr></c:if>	
    </table>
    Merci a+

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

Discussions similaires

  1. Afficher une liste d'objets dans une JTable
    Par ensemien dans le forum Composants
    Réponses: 5
    Dernier message: 25/11/2012, 17h43
  2. trier une liste d'objets dans une ArrayList
    Par sandrine49 dans le forum Collection et Stream
    Réponses: 9
    Dernier message: 13/10/2008, 08h59
  3. Chercher un objet dans une liste d'objet
    Par Axiome dans le forum Windows Forms
    Réponses: 5
    Dernier message: 10/10/2008, 09h43
  4. Réponses: 2
    Dernier message: 29/05/2008, 15h59
  5. Savoir si un objet d'une certaine classe est dans une liste
    Par Denti-fritz dans le forum Langage
    Réponses: 3
    Dernier message: 26/04/2007, 09h05

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