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 :

[Struts-Layout] probleme pagination avec datagrid


Sujet :

Struts 1 Java

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    27
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Tunisie

    Informations forums :
    Inscription : Octobre 2008
    Messages : 27
    Par défaut [Struts-Layout] probleme pagination avec datagrid
    salut,

    je travaille avec Struts-Layout 1.2 et Struts 1.2

    dans la premiere page du datagrid tou va bien mais lorsque je clique sur la page suivante il ne peut pas m'afficher la page il se redirige vers:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="http://127.0.0.1:8888/MyProjet/sort.do?layoutCollection=0&layoutCollectionProperty=&layoutCollectionState=0&pagerPage=1&pagerSessionId=session" target="_blank">http://127.0.0.1:8888/MyProjet/sort....sionId=session</a>

    voici mon code pour ma 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
    <layout:panel key="listeUsesCaseOption" styleClass="FORM" width="90%"
    		align="center">
    		<layout:pager styleClass="PAGER" maxPageItems="5" sessionPagerId="session" >
    			<layout:datagrid property="usesCaseOptionlist" styleClass="DATAGRID"
    				selectionAllowed="false" multipleSelectionAllowed="false"
    				model="datagrid" >
    				<layout:datagridColumn mode="I,I,I" width="150" title="libelleuc"
    					property="libelleuc" />
    				<layout:datagridColumn mode="I,I,I" width="150"
    					title="libelleOption" property="libelleOption" />
    			</layout:datagrid>
    			<layout:row styleClass="LABEL">
    				<layout:pagerStatus key="pager.status.pager" />
    				ayout:row>
    		</layout:pager>
    	</layout:panel>
    dans struts-config.xml:


    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
    <action-mappings>
    		<action path="/sort"
    			type="fr.improve.struts.taglib.layout.sort.SortAction"
    			scope="session" validate="false" />
    		<action path="/treeview"
    			type="fr.improve.struts.taglib.layout.treeview.TreeviewAction"
    			scope="session" validate="false" />
    ............
    <action path="/GestionDesProfils/chercher"
    			type="tn.securite.GestionDesProfilsAction"
    			name="GestionDesProfilsForm" scope="session"
    			parameter="chercher"
    			input="/JSP/GestionDesProfils.jsp" validate="true">
    			<forward name="success"
    				path="/JSP/GestionDesProfils.jsp" />
    			<forward name="cancel" path="/JSP/page.jsp" redirect="true"/>
    		</action>
    ............
    je n'arrive pas a corriger ce problème
    merci d'avance pour votre aide

  2. #2
    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
    Le tag layout:pager est-il dans un tag layout:form ?
    Et le tag layout:form est-il dans un tag layout:html ?

    La pagination devrait fonctionner dans la mesure où tu devrais pouvoir changer de page en cliquant sur le lien correspondant mais tu auras quand même un problème dans la mesure où le tag layout:pager ne fonctionne pas avec les collections modifiables, comme c'est écrit dans la Todo de Struts-Layout.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    27
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Tunisie

    Informations forums :
    Inscription : Octobre 2008
    Messages : 27
    Par défaut
    Merci pour m'attirer l'attention du Todo de Struts-Layout.

    Le tag layout:pager est dans un tag layout:form et le tag layout:form est dans un tag layout:html.

    Est-ce que je peux faire la pagination avec une autre méthode (sans utiliser le tag layout:pager) ?

  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
    On avait trouvé une solution pour faire fonctionner le layout:pager avec une collection en modification (layout:collection) en gérant les index via des EL et la JSTL dans cette discussion.
    Mais une datagrid est plus complexe dans la mesure où on peut supprimer ou ajouter des enregistrements.
    De plus, dans ton cas, la fonction de pagination ne fonctionne même pas, ce qui est surprenant d'ailleurs.
    Normalement, tu devrais pouvoir paginer en cliquant sur les liens.
    Ce qui fait qu'on ne peut pas utiliser le layout:pager avec une collection en mise à jour, c'est parce qu'il ne gère pas correctement les index.
    Par exemple, si tu es sur la deuxième page, il considère que la première ligne a pour index 0, ce qui est incorrect.

    Sinon, je ne connais pas de solution miracle autre que le layout:pager.
    C'est sûrement possible mais il faut tout coder toi-même, la gestion des liens pour paginer, la gestion des index, ..., donc pas simple à mettre en oeuvre.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    27
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Tunisie

    Informations forums :
    Inscription : Octobre 2008
    Messages : 27
    Par défaut
    Au lieu de faire la pagination , est ce que c'est possible de faire un scroll bar dans le datagrid ?

  6. #6
    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
    A ma connaissance non car je ne vois pas d'attribut height dans le tag datagrid.

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    27
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Tunisie

    Informations forums :
    Inscription : Octobre 2008
    Messages : 27
    Par défaut
    Enfin c'est résolu

    En faite , j'ai remarqué .do dans le lien qui apparaît lorsque je veux passer à une autre page du datatgrid:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="http://127.0.0.1:8888/MyProjet/sort.do?layoutCollection=0&layoutCollectionProperty=&layoutCollectionState=0&pagerPage=1&pagerSessionId=session" target="_blank">http://127.0.0.1:8888/MyProjet/sort....sionId=session</a>
    alors que j'utilise le /do dans le web.xml.

    j'est essayé d'ajouter un filtre .do dans mon web.xml
    càd j'ai ajouté
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <servlet-mapping>
    		<servlet-name>action</servlet-name>
    		<url-pattern>*.do</url-pattern>
    </servlet-mapping>
    alors tout ça marche bien maintenant

  8. #8
    Membre averti
    Inscrit en
    Avril 2007
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 35
    Par défaut
    Salut
    j'ai tout petit probleme avec layout:pager dans la quelle il y a une datagrid voici mon code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <layout:pager styleClass="PAGER" maxPageItems="15" sessionPagerId="session2" >
    		<layout:datagrid property="lesCommissions" multipleSelectionAllowed="false" selectionAllowed="true"
    				styleClass="DATAGRID" model="datagrid">
     
    		<layout:datagridColumn property="refCommission" title="RefCommission" width="100"/>
    		<layout:datagridColumn property="dateCommission" title="DateCommission" width="100"/>
    	    <layout:datagridColumn property="budgetCommission" title="BudgetCommission" width="100"/>
    		</layout:datagrid>
    		<layout:row styleClass="LABEL">
    			    <layout:pagerStatus key="pager.status.pager" />
    				<layout:pagerStatus key="pager.status.items" />
    				</layout:row>		
    	</layout:pager>
    aussi dans cette jsp j'ai un bouton lorsque je clique sur, le layout pager n'affiche pas le chemain des autres pages et il m'affiche seulement la derniere page afficher (c'est a dire choisi) et non pas les autres est ce que quelqu'un peut m'aider?????????

  9. #9
    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
    Mais quel est ce bouton sur lequel tu cliques ?
    Peux-tu être plus précise ?

    Mais de toute façon, comme je l'ai déjà précisé au cours de la discussion, même si tu arrives à faire fonctionner la pagination, tu auras des problèmes lors de la mise à jour parce qu'à chaque page, il considérera que la première ligne a pour index 0.

  10. #10
    Membre averti
    Inscrit en
    Avril 2007
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 35
    Par défaut
    salut merci de m'avoir répondu.
    Lorsque je clique sur n'importe quel bouton qui fait appel a une autre methode dans la ma class action il m'affiche seulement la page en cours et non pas les autres page aussi bien j'ai essayé de récuperer mon datagrid dans l'action et si je fait appeler une autre méthode je recharge cette datagrid en recuperons sa valeur de la session par exemple :

    gestionUseCaseForm.setListeMenu1((Datagrid) request.getSession().getAttribute("listeMenu1"));
    Oui et je sais tres bien qu'il concidere chage page comme une nouvelle page car j'ai essayer de forcer la selection par Datagrid datagrid1=(Datagrid) request.getSession().getAttribute("listeMenu1");
    datagrid1.setDataState(1,"SELECTED");
    gestionUseCaseForm.setListeMenu1(datagrid1);


    mais c'a na pas marché car a chaque page il selectionne la deuxieme ligne de la data grid.

    Mais mon probleme mnt c'est qu'il reaffiche le nombre de page au dessus du datagrid mais il ne conserve la page courant car il retourne a la premiere page et cette solution n'est pas ideale car elle ne repond pas au besoin de mon application.
    Est ce que il ya une solution sans passer par la session pour faire afficher tous les pages avec la derniere page utiliser.
    Et merci d'avance et je suis désoler pour le dérangement

  11. #11
    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
    La prochaine fois, merci de mettre de la ponctuation dans tes phrases parce que là, c'est difficile à comprendre.

    Ce n'est pas le datagrid qu'il faut mettre dans le scope session mais plutôt le form-bean qui a pour propriété le datagrid.
    Il faut donc modifier l'attribut scope="request" en scope="session" dans le mapping de la DispatchAction.

    Concernant le problème d'index, tu ne pourras rien y faire tout simplement parce que le tag pager n'est pas adapté pour fonctionner avec un datagrid.

  12. #12
    Membre averti
    Inscrit en
    Avril 2007
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 35
    Par défaut
    Citation Envoyé par c_nvy Voir le message
    La prochaine fois, merci de mettre de la ponctuation dans tes phrases parce que là, c'est difficile à comprendre.

    Ce n'est pas le datagrid qu'il faut mettre dans le scope session mais plutôt le form-bean qui a pour propriété le datagrid.
    Il faut donc modifier l'attribut scope="request" en scope="session" dans le mapping de la DispatchAction.

    Concernant le problème d'index, tu ne pourras rien y faire tout simplement parce que le tag pager n'est pas adapté pour fonctionner avec un datagrid.

    Merci, tjrs j'oublie la ponctuation.
    j'ai verifié le scope quia pour proprieté datagrid est c'est session.
    Ca marche l'indexation avec le sauvegarde de datagrid dans la session et pour aussi bien que la page courrente, mais ce n'est pas une solution car il me presente un autre probleme ==> si un message d'erreur s'affiche avec une popup et je ferme ce message la et quand je clique sur Suivant de pager il m'affiche tjrs le dernier message: c'est a dire si le dernier msg etait "svp inserrer des donner" quand je clique sur suivant ou precedent il m'affiche ce message la.


    Mnt je ne peut pas changer de datagrid vers le collection, mais j'ai pensé a une autre solution: Est ce qu'on peut utiliser des scrollbar dans des datagrid ? et si oui comment car je suis débutante dans struts et meme dans jsp svp j'attent votre réponse et mercciiiiiiiiiiiiiiiiiiiiiiiiiiiiiii

  13. #13
    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
    Citation Envoyé par nadou114 Voir le message
    Est ce qu'on peut utiliser des scrollbar dans des datagrid ?
    Si jamais c'est possible, je ne sais pas comment.

  14. #14
    Membre averti
    Inscrit en
    Avril 2007
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 35
    Par défaut
    Citation Envoyé par c_nvy Voir le message
    Si jamais c'est possible, je ne sais pas comment.
    Oui c'est possible j'ai essaye de mettre un datagrid dans un scrollbar et sa marche. il faut donc ajouter un code a vote fichier .CSS :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    .scroll_table_datagrid4 {
    	overflow: auto;
    	height: 200px;
    	width: 500px;
     
    }

    Aussi dans votre jsp changer ajouter ce code la :


    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
     <layout:html styleClass="LABEL">  	
         <div class="scroll_table_datagrid4">
    			<table align="right" border="1" width="100%">
     
     				 <tr>
       					 <td>
    		<layout:datagrid property="lesCommissions" multipleSelectionAllowed="false" selectionAllowed="true"
    				styleClass="DATAGRID" model="datagrid">
     
    		<layout:datagridColumn property="refCommission" title="RefCommission" width="100"/>
    		<layout:datagridColumn property="dateCommission" title="DateCommission" width="100"/>
    	    <layout:datagridColumn property="budgetCommission" title="BudgetCommission" width="100"/>
    		</layout:datagrid>
     
    	   </td>
           </tr>
          </table>
          </div>
     </layout:html>
    Et bien merci bien pour votre aide
    Si j'ai d'autres problemes est-ce que je peux les poser ?

  15. #15
    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
    Citation Envoyé par nadou114 Voir le message
    Et bien merci bien pour votre aide
    De rien.
    Merci à toi d'avoir posté la solution avec scrollbar.

    Citation Envoyé par nadou114 Voir le message
    Si j'ai d'autres problemes, est-ce que je peux les poser ?
    Bien sûr. Le forum est fait pour cela.
    Mais, pour tout nouveau problème, ouvre une nouvelle discussion.

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

Discussions similaires

  1. Probleme affichage avec datagrid & sql server 2005
    Par abelmasengu dans le forum ASP.NET
    Réponses: 1
    Dernier message: 09/03/2009, 11h48
  2. [Struts-Layout] probleme avec la collection
    Par verdi-verda dans le forum Struts 1
    Réponses: 2
    Dernier message: 17/09/2008, 19h58
  3. [Struts-Layout] problème du <layout:pager>
    Par osman.amine dans le forum Struts 1
    Réponses: 12
    Dernier message: 09/08/2007, 18h46
  4. [Struts-Layout] probleme avec pager et sort
    Par Kendael dans le forum Struts 1
    Réponses: 22
    Dernier message: 07/08/2007, 13h38
  5. Réponses: 2
    Dernier message: 25/06/2007, 14h36

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