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 :

Pagination d'un tableau dans une page jsp à partir d'une requete


Sujet :

Servlets/JSP Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 16
    Points : 16
    Points
    16
    Par défaut Pagination d'un tableau dans une page jsp à partir d'une requete
    Bonjour,

    J'ai une ArrayList d'Objet Document, Document contient des attributs: id de type int, auteur et resume de type String.
    J'ai réussi à afficher le contenu dans une page en jsp avec une boucle en jstl:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <c:forEach items="${requestScope.documents}" var="doc">		
    	<tr>						
    		<td>
    			<div>
    				<strong>Numéro:</strong> <c:out value="${doc.ID}" default="" />
    				<br>
    				<strong>Auteur:</strong> <c:out value="${doc.auteur}" default="" />
    				<br>
    			</div>	
    		</td>
    	</tr>				
    </c:forEach>

    Le problème est que si j'ai 200 documents, cela m'affiche tout dans ce tableau. Je désire faire une pagination.
    J'ai trouvé cette discussion qui date un peu: https://www.developpez.net/forums/d2...tion-page-jsp/

    Mais je n'ai pas réussi à utiliser les displaytag, j'ai essayé celui-ci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <display:table name="documents">
    		  <display:column  property = "ID" title="ID"/>
    		  <display:column property="auteur" />
    </display:table>

    J'ai une erreur: Etat HTTP 500 - java.lang.NoClassDefFoundError: org/apache/commons/lang/UnhandledException



    Merci d'avance

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 16
    Points : 16
    Points
    16
    Par défaut
    Personne n'utilise la pagination dans une page jsp ?

  3. #3
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Bonjour,

    Il te manque la librairie commons-lang-2.6.jar.

    A+.

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 16
    Points : 16
    Points
    16
    Par défaut
    Merci, je l'ai rajouter dans mon /WEB-INF/lib
    Nom : Capture d’écran 2017-02-09 à 15.39.44.png
Affichages : 676
Taille : 14,1 Ko

    Mais j'ai apparemment toujours la même erreur, un problème au niveau de commons:



    Etat HTTP 500 - javax.servlet.ServletException: java.lang.NoClassDefFoundError: org/apache/commons/collections/IteratorUtils

    type Rapport d''exception

    message javax.servlet.ServletException: java.lang.NoClassDefFoundError: org/apache/commons/collections/IteratorUtils

    description Le serveur a rencontré une erreur interne qui l''a empêché de satisfaire la requête.

    exception

    org.apache.jasper.JasperException: javax.servlet.ServletException: java.lang.NoClassDefFoundError: org/apache/commons/collections/IteratorUtils
    org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:560)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:461)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:396)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:340)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
    com.sdzee.servlets.Test2.doGet(Test2.java:43)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:622)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)


    cause mère

    javax.servlet.ServletException: java.lang.NoClassDefFoundError: org/apache/commons/collections/IteratorUtils
    org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:909)
    org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:838)
    org.apache.jsp.WEB_002dINF.pageTableau_jsp._jspService(pageTableau_jsp.java:180)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:438)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:396)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:340)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
    com.sdzee.servlets.Test2.doGet(Test2.java:43)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:622)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)


    cause mère

    java.lang.NoClassDefFoundError: org/apache/commons/collections/IteratorUtils
    org.displaytag.tags.TableTag.initParameters(TableTag.java:1068)
    org.displaytag.tags.TableTag.doStartTag(TableTag.java:767)
    org.apache.jsp.WEB_002dINF.pageTableau_jsp._jspx_meth_display_005ftable_005f0(pageTableau_jsp.java:199)
    org.apache.jsp.WEB_002dINF.pageTableau_jsp._jspService(pageTableau_jsp.java:141)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:438)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:396)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:340)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
    com.sdzee.servlets.Test2.doGet(Test2.java:43)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:622)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)





    Mon fichier: pageTableau.jsp

    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
     
    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <%@ taglib prefix="display" uri="http://displaytag.sf.net"  %>
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"  %>
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
       <head>
          <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
          <title>Test de tableau</title>
       </head>
     
       <body>
     
       <display:table name="documents">
          <c:forEach var="doc" items="${requestScope.documents}">
             <display:column property="${doc.ID}" title="id"/>
             <display:column property="${doc.auteur}" title="auteur"/>
          </c:forEach>
       </display:table>
     
       </body>
    </html>


    Ma servlet: Test2.java qui envoie la liste d'ArrayList de Documents:

    Code java : 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
    @WebServlet( "/Test2" )
    public class Test2 extends HttpServlet {
     
        public static final String ATT_DOCUMENTS = "documents";
        public static final String VIEW_SEARCH   = "/WEB-INF/pageTableau.jsp";
     
        protected void doGet( HttpServletRequest request, HttpServletResponse response )
                throws ServletException, IOException {
            // TODO Auto-generated method stub
            {
                // Creation d'un objet document1
                Document doc1 = new Document();
                doc1.setAuteur( "Bob Marley" );
                doc1.setID( 2134 );
                doc1.setReference( "1232 - 2343 34" );
                doc1.setResume( "L'histoire d'un chanteur/musicien " );
     
                // Creation d'un objet document2
                Document doc2 = new Document();
                doc2.setAuteur( "Molière" );
                doc2.setID( 324 );
                doc2.setReference( "34534 - 3543 14" );
                doc2.setResume( "Un écrivain" );
     
                // Creation d'une arrayList de document
                ArrayList<Document> documents = new ArrayList<Document>();
                // Ajout des documents dans la liste
                documents.add( doc1 );
                documents.add( doc2 );
     
                request.setAttribute( ATT_DOCUMENTS, documents );
                this.getServletContext().getRequestDispatcher( VIEW_SEARCH ).forward( request, response );
            }
        }
     
    }

  5. #5
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Utilise la version 3.2.2 pour commons-collections mais pas la version 4.4.1

    A+.

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 16
    Points : 16
    Points
    16
    Par défaut
    Génial ça marche !!!!
    Merci andry.aime
    L'affichage du tableau s'est bien affiché.

    Mais lorsque je rajoute un attribut pagesize, le lien de la page 2 ne fonctionne pas :/
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <display:table name="requestScope.documents" pagesize="2">
    		  <display:column  property = "ID" title="ID"/>
    		  <display:column property="auteur" />
    </display:table>
    Nom : Capture d’écran 2017-02-09 à 22.58.43.png
Affichages : 662
Taille : 22,9 Ko


    J'obtiens ceci en cliquant sur la page 2:

    Nom : Capture d’écran 2017-02-09 à 22.59.08.png
Affichages : 681
Taille : 32,2 Ko


    En URL, je vois: "http://localhost:8081/Test1/WEB-INF/pageTableau.jsp?d-49653-p=2"
    Alors que ma pageTableau.jsp ne peut être afficher normalement que par l'intermédiaire d'une servlet avec l'url-pattern /Test2

    J'ai essayé de rentrer manuellement: "http://localhost:8081/Test1/Test2?d-49653-p=2"
    Ca marche mais comment faire en sorte que la page 2 redirige correctement?

    Cela fait peu de mois que je commence à apprendre le JEE, il y a certainement des notions qu'il me manque.
    Merci d'avance

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 16
    Points : 16
    Points
    16
    Par défaut
    Ho j'ai trouvé quelque chose du côté des attributs de la balise display:table.
    En ajoutant un autre attribut requestURI
    Cela semble marcher mais je ne sais pas si c'est la bonne manière

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <display:table name="requestScope.documents" requestURI="/Test2" pagesize="2">
    		  <display:column  property = "ID" title="ID"/>
    		  <display:column property="auteur" />
    </display:table>

Discussions similaires

  1. Réponses: 0
    Dernier message: 20/05/2009, 20h29
  2. remplir tableau dans une page JSP à partir d'un fichier texte
    Par ramzouni dans le forum Servlets/JSP
    Réponses: 6
    Dernier message: 04/05/2009, 20h44
  3. passer un string dans l'URL à partir d'une page jsp
    Par marry dans le forum Servlets/JSP
    Réponses: 4
    Dernier message: 26/04/2009, 15h04
  4. appeler une action a partir d'une page jsp
    Par air75 dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 17/07/2008, 16h03
  5. Réponses: 4
    Dernier message: 30/01/2008, 14h56

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