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] layout:collection & pagination


Sujet :

Struts 1 Java

  1. #1
    Futur Membre du Club
    Inscrit en
    Mai 2007
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 12
    Points : 6
    Points
    6
    Par défaut [Struts-Layout] layout:collection & pagination
    Salut,

    J'ai un soucis par rapport a la récupération des données saisis dans un layout:collection, ce problème se pose qu'on j'utilise la pagination la données disparaissent ;

    Voila l'entête du code pour le layout:collection :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    <layout:pager maxPageItems="15">
    <layout:collection name="MaForm" indexId="index" id="ligne" property="maCollection" width="100%">
    et j'utilise la technique suivante pour rendre le layout:collection dynamique :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <layout:text property="maCollection[${index}].champs1" readonly="true" layout="false" size="8" style="color:blue; text-decoration:underline; font-weight:bold; cursor:hand;"/>
    Je ne vois pas pourquoi je perd mes données quand j'utilise la pagination;

    Merci d'avance

  2. #2
    Membre chevronné
    Inscrit en
    Août 2009
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 1 073
    Points : 1 806
    Points
    1 806
    Par défaut
    Le readonly=true ?

  3. #3
    Futur Membre du Club
    Inscrit en
    Mai 2007
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 12
    Points : 6
    Points
    6
    Par défaut layout:Collection & pagination
    Toujours pareil, c'est pas le readonly="true" qui cause ce problème ;

    Si vous avez d'autres solutions

    Merci d'avance

  4. #4
    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
    Le problème c'est que l'index recommence à zéro dans chacune des pages.
    Il ne correspond donc plus à l'index de la collection.

    Une solution avec calcul de la valeur de l'index en fonction de la page sélectionnée et du nombre maximum d'éléments affichés par page a déjà été donnée dans la discussion suivante.

  5. #5
    Futur Membre du Club
    Inscrit en
    Mai 2007
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 12
    Points : 6
    Points
    6
    Par défaut layout:collection + pagination + IndexOutOfBoundsException
    Slt,


    J'ai intégré le code cité auparavant après l'ouverture du tag <layout:collection>


    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
    25
    26
    27
     
     
    <layout:pager maxPageItems="15" sessionPagerId="pagerPage">
     
    <layout:collection name="MaForm" offsetIndexId="index" id="ligne" property="maliste" width="100%">
     
    <c:choose>
    	<c:when test="${param['pagerPage']==null}">
    		<c:set var="pagerPage" value="0"/>
    	</c:when>
    	<c:otherwise>
    		<c:set var="pagerPage" value="${param['pagerPage']}"/>
    	</c:otherwise>
    </c:choose>
     
    <c:choose>
     	<c:when test="${pagerPage==0}">
    	 	<c:set var="newIndex" value="${index}"/>
    	</c:when>
     	<c:otherwise>
     		<c:set var="newIndex" value="${index+(10*pagerPage)}"/>
    	</c:otherwise>
    </c:choose>
     
    ...
     
    </layout:collection>

    après que je clique sur le lien de pagination il me donne :

    org.apache.catalina.core.ApplicationDispatcher invoke
    SEVERE: "Servlet.service()" pour la servlet jsp a lancé une exception
    Throwable occurred: java.lang.IndexOutOfBoundsException
    at java.util.ArrayList.get(Unknown Source)
    Si quelqu'un a une idée par rapport a ca


    Merci d'avance

  6. #6
    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
    Comme le maxPageItems est égal à 15, il faut remplacer 10 par 15 dans le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    	<c:set var="newIndex" value="${index+(15*pagerPage)}"/>

  7. #7
    Futur Membre du Club
    Inscrit en
    Mai 2007
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 12
    Points : 6
    Points
    6
    Par défaut layout:collection + pagination + IndexOutOfBoundsException
    Salut,

    Oui vous avez raison, j'ai oublié de faire la modif ,

    je l'ai fais mais en vain, j'ai tjrs le problème lorsque je fais la pagination, le layout:collection ne garde pas les données ;


    Voila les premières lignes de 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
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
     
     
    <layout:pager maxPageItems="10" sessionPagerId="pagerPage">
     
    							<layout:collection name="FactCltForm" indexId="index" id="lignecmdclt" property="listLignesCmdClt" width="100%">
     
    								<c:choose>
    									<c:when test="${param['pagerPage']==null}">
    										<c:set var="pagerPage" value="0"/>
    									</c:when>
    									<c:otherwise>
    										<c:set var="pagerPage" value="${param['pagerPage']}"/>
    									</c:otherwise>
    								</c:choose>
     
    								<c:choose>
    								 	<c:when test="${pagerPage==0}">
    									 	<c:set var="newIndex" value="${index}"/>
    									</c:when>
    								 	<c:otherwise>
    								 		<c:set var="newIndex" value="${index+(10*pagerPage)}"/>
    									</c:otherwise>
    								</c:choose>
     
    								<layout:collectionItem title="Article">
    									<layout:link href="javascript:goToInterroStock('${lignecmdclt.artId}','${lignecmdclt.artcode}', '${lignecmdclt.ligneCltId}', '${lignecmdclt.typeligneClt}');">
    										<layout:text property="listLignesCmdClt[${newIndex}].artcode" readonly="true" layout="false" size="8" style="color:blue; text-decoration:underline; font-weight:bold; cursor:hand;"/>
    									</layout:link>
    								</layout:collectionItem>
    								<layout:collectionItem property="artdesign" title="DESIGNATION"/>


    Merci d'avance pour votre aide

  8. #8
    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
    Mais peux-tu préciser ce que tu veux dire par "le layout:collection ne garde pas les données" ?
    Fais-tu référence à des données saisies dans la collection ?

  9. #9
    Futur Membre du Club
    Inscrit en
    Mai 2007
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 12
    Points : 6
    Points
    6
    Par défaut layout:collection + pagination + IndexOutOfBoundsException
    oui quand je saisi des données dans des zonnes de type :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    <layout:text property="listLignesCmdClt[${newIndex}].qtesaisie" size="4" readonly="true" layout="false"/>
    après, quand je click sur le lien de pagination du layout:collection et que je revienne a la meme page je trouve plus la qte que j'ai saisie dans cette zonne de texte ;


    Merci

  10. #10
    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, quand tu saisis une valeur dans un champ de la collection, il faut soumettre le formulaire pour que la mise à jour soit prise en compte et ce avant de changer de page.

  11. #11
    Futur Membre du Club
    Inscrit en
    Mai 2007
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 12
    Points : 6
    Points
    6
    Par défaut layout:collection + pagination
    oui je pense que c'est ce que je vais faire,

    Merci bcp pour votre aide

Discussions similaires

  1. [Struts-Layout] style collection lignes
    Par lore2002 dans le forum Struts 1
    Réponses: 14
    Dernier message: 26/07/2010, 20h57
  2. [Struts-Layout] layout:collection et checkbox
    Par Mayhem dans le forum Struts 1
    Réponses: 10
    Dernier message: 01/11/2006, 00h59
  3. [Struts-Layout] layout:collection et bar de scroll
    Par david06600 dans le forum Struts 1
    Réponses: 1
    Dernier message: 09/10/2006, 09h58
  4. struts layout Deux collection: l'une dépend de l'autre
    Par kamaldev dans le forum Struts 1
    Réponses: 9
    Dernier message: 01/08/2006, 23h02
  5. [Struts] Struts-Layout/layout:collection
    Par dehbi dans le forum Struts 1
    Réponses: 4
    Dernier message: 14/04/2006, 14h06

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