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 :

affichage d'une liste sur plusieurs pages


Sujet :

Struts 1 Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 64
    Points : 54
    Points
    54
    Par défaut affichage d'une liste sur plusieurs pages
    Bonjour
    Dans mon application après saisie de critères de recherche tel que les premières lettres du nom par exemple, je dois afficher la liste de mes clients avec le nom , prénom et département : le nombre maximum est 1000 .

    L'utilisateur demande d'afficher 50 clients par page ce qui peut me faire un maximum de 20 pages. Il souhaite donc avoir des liens "debut", "précédent", suivant" et "fin" de manière à naviguer ds la liste.
    Pour l'instant j'ai programmé l'affichage complet ; au niveau de ma jsp, j'utilise une balise struts <logic:iterate indexId="i"..... pour afficher ma liste de mon bean (c'est une Arraylist) et ça marche bien.

    Ce que je voudrais savoir c'est comment programmer cela (je suis débutante ds ce domaine) : chaque fois que je clique sur un lien (debut, précédent....),est ce que je dois retourner dans mon action afin de gérer à chaque fois une nouvelle liste ou bien est ce que cela peut se faire en restant dans la jsp (javascript ou autre)?

    Merci de votre réponse

  2. #2
    Membre actif
    Homme Profil pro
    Développeur Java
    Inscrit en
    Août 2007
    Messages
    197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Août 2007
    Messages : 197
    Points : 246
    Points
    246
    Par défaut
    tu trouvera sûrement une solution simple avec du javascript. Ce qui évitera de faire un appel à ton action.

    concernant la pagination en java tu peux également la gérer via ton action. Il me semble que le "logic iterate" prend en paramètre un "début" et une "fin" d'itération.

    Ou encore mieux c'est d'utiliser display-table qui gère très facilement la pagination et le tri et ainsi que l'I18N . http://displaytag.sourceforge.net/11/

    A toi de voir
    personnellement quand tu as essayer une fois "display table" tu ne pourras plus t'en passer.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 64
    Points : 54
    Points
    54
    Par défaut
    J'ai jeté un oeil à display -tag ; masi est ce compatible avec struts ?

  4. #4
    Membre du Club
    Inscrit en
    Février 2008
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 66
    Points : 67
    Points
    67
    Par défaut
    Citation Envoyé par sandrine49 Voir le message
    J'ai jeté un oeil à display -tag ; masi est ce compatible avec struts ?
    oui display-tag est bien compatible avec STRUTS, pour l'utiliser il suffit d'ajouter:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <%@ taglib uri="http://displaytag.sf.net" prefix="display" %>
    dans ton jsp.
    ici tu trouvera aussi un tutoriel qu'il peut t'aider.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 64
    Points : 54
    Points
    54
    Par défaut
    Merci
    Mais je débute vraiment et ce que j'ai fait, je l'ai fait en recopiant des parties d'applications existante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <logic:iterate indexId="i" id="leClient" type="client" name="searchClientForm" property="listeClients" >
    <logic:present name="unAgent">
    	<bean:define id="nom" name="leClient" property="nom" />
      	<bean:define id="prenom" name="leClient" property="prenom" />								
    	<tr>
    	   <td><bean:write name="nom" filter="true" /></html:link></td>
    	   <td><bean:write name="prenom" filter="true" /></html:link></td>
    	</tr>								
    </logic:present>
    Donc ça ça marche en affichant le résultat sur une page mais je ne vois pas trop comment faire le lien entre mon bean de formulaire (searchClientForm) et le display tag.
    De plus je n'ai pas bien compris comment s'affichait la ligne "first/prev..." et comment la paramétrer pour qu'elle s'affiche en français.

  6. #6
    Membre actif
    Homme Profil pro
    Développeur Java
    Inscrit en
    Août 2007
    Messages
    197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Août 2007
    Messages : 197
    Points : 246
    Points
    246
    Par défaut
    si tu utilises display:table alors ton code devrait ressembler à ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <display:table  class="report" cellspacing="0" cellpadding="0" width="99%" border="0" name="searchClientForm" property="listeClients" id="client" requestURI="MonAction.do" pagesize="10">
    <logic:present name="unAgent">
    <display:column title="nom" sortable="true" property="nom"/>
    <display:column title="prenom" sortable="true" property="prenom"/>
    </logic:present>
    </display:table>
    "MonAction.do" correspond à l'action que tu appelle afin d'arriver à ta jsp.

    N'oublie pas de bien rajoutter dans ton projet dans le répertoire WEB-INF par exemple la tld: displaytag-11.tld

    dans ton fichier web.xml:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <!-- taglib display -->
    	<taglib>
    		<taglib-uri>/tags/displaytag-11</taglib-uri>
    		<taglib-location>/WEB-INF/tld/displaytag-11.tld</taglib-location>
    	</taglib>
    et dans ta jsp au debut:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <%@ taglib uri="/WEB-INF/tld/displaytag-11.tld" prefix="display" %>
    concernant ta pagination et l'affichage de "previous" et "next" se fait automatiquement dès que tu as atteind la taille spécifiée dans le display: table pagesize="15" par exemple fera la pagination sur 15 résultats...
    concernant son internationalisation: http://displaytag.sourceforge.net/11/i18n.html

    et si le style ne te plais pas:
    http://displaytag.sourceforge.net/11/configuration.html

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 64
    Points : 54
    Points
    54
    Par défaut
    Merci pour ces infos bien appréciables pour une débutante,

    Cependant j'ai le message suivant :
    org.apache.jasper.JasperException: /jsp/nbrePremierResultat.jsp(32,0) L'attribut width est incorrect pour le tag table d'après la TLD indiquée

    Voila ce que j'ai fait comme tu me l'a conseillé,
    Dans ma JSP j'ai rajouté :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <%@ taglib uri="http://displaytag.sf.net" prefix="display" %>
    ...
    <display:table  class="report" cellspacing="0" cellpadding="0" width="99%" border="0" name="nombrePremierResultatForm" property="listeNombre" id="nbre"  pagesize="10">
     
    <display:column title="nom" sortable="true" property="nbre"/>
    </display:table>
    Dans mon web.xml :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <taglib>
    		<taglib-uri>/tags/displaytag-11</taglib-uri>
    		<taglib-location>/WEB-INF/tlds/displaytag.tld</taglib-location>
    	</taglib>

    Ensuite j'ai telechargé displaytag-1.1-bin.zip
    que j'ai dézippé et mis displaytag-1.1.jar sous WEB-INF/lib
    De ce .jar, j'ai extrait displaytag.tld que j'ai mis sous WEB-INF/tlds : j'ai eu du mal d'ailleurs à trouver ce .tld

    Aurais je oublié qqchose ?

  8. #8
    Membre actif
    Homme Profil pro
    Développeur Java
    Inscrit en
    Août 2007
    Messages
    197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Août 2007
    Messages : 197
    Points : 246
    Points
    246
    Par défaut
    oui,

    ne rajoutte pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <%@ taglib uri="http://displaytag.sf.net" prefix="display" %>
    car tu à toi même télécharger ta tld, donc autant l'utilisée

    utilise plutôt:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <%@ taglib uri="/WEB-INF/tld/displaytag-11.tld" prefix="display" %>
    en faisant bien attention à ce que l'uri soit adapté pour ton projet

  9. #9
    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
    Pour information, il n'est pas utile de copier la tld sous WEB-INF étant donné qu'en utilisant cette directive taglib :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <%@ taglib uri="http://displaytag.sf.net" prefix="display" %>
    on pointe directement sur la tld présente dans le jar.

    Sinon, d'après le message d'erreur suivant :
    org.apache.jasper.JasperException: /jsp/nbrePremierResultat.jsp(32,0) L'attribut width est incorrect pour le tag table d'après la TLD indiquée
    le tag table n'a pas d'attribut width défini dans la tld.
    Il suffit donc de supprimer cet attribut du tag display:table.
    Modératrice Java - Struts, Servlets/JSP, ...

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 64
    Points : 54
    Points
    54
    Par défaut
    Bonsoir,

    J'ai enlevé l'd'attribut width et maintenant j'ai cela
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    org.apache.jasper.JasperException: /jsp/nbrePremierResultat.jsp(33,0) L'attribut property est incorrect pour le tag table d'après la TLD indiquée
    Or property coreespond à la liste de mon bean de formulaire que je veux afficher :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public class NbrePremierResultatForm extends ActionForm {
     
    	...
    	ArrayList listeNombre=null;
    De plus comment faire pour afficher le rang du nombre dans une colonne ?

  11. #11
    Membre actif
    Homme Profil pro
    Développeur Java
    Inscrit en
    Août 2007
    Messages
    197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Août 2007
    Messages : 197
    Points : 246
    Points
    246
    Par défaut
    j'ai un doute sûr la tld que tu utilises. celle que tu as téléchargé doit être la 1.1.1

    et dans cette nouvelle release certains attributs que j'ai mis comme exemple sont "@depreciated" . Je n'avais pas fait attention que mon exemple marche uniquement avec la 1.0 et ne fonctionne donc pas avec la nouvelle version 1.1.1

    si tu souhaite vraiment te baser sur mon exemple: cf:
    http://displaytag.sourceforge.net/10/

    et pour la tld:
    http://sourceforge.net/project/showf...ckage_id=73060
    et télécharge la 1.0.

    ++

Discussions similaires

  1. Réponses: 1
    Dernier message: 13/06/2008, 17h24
  2. afficher une liste sur plusieurs pages
    Par bigbathie dans le forum Struts 1
    Réponses: 1
    Dernier message: 28/12/2007, 09h47
  3. [MySQL] Affichage des résultats d'une requête sur plusieurs pages
    Par leloup84 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 25/10/2006, 13h24
  4. [JSP]affichage d'un tableau sur plusieurs pages
    Par MAJIK_ENIS dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 29/08/2005, 11h21
  5. [Struts]Affiche d'une liste sur plusieurs pages
    Par guillaume_85 dans le forum Struts 1
    Réponses: 3
    Dernier message: 24/06/2005, 20h23

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