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

JSF Java Discussion :

Tri et pagination myFaces


Sujet :

JSF Java

  1. #1
    Membre éclairé Avatar de maloups
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    332
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 332
    Par défaut Tri et pagination myFaces
    Bonjour,

    J'essaye deseperement d'integrer l'exemple de myFaces "pagedSortTable.jsp" qui permet de faire du tri par colonne sur un datatabble ainsi que de la pagination...

    J'ai reussi à isoler les fichiers indispensables à cette exemple dans un petit projet à part et ca fonctionne très bien. Mais depuis 2 jours j'essaye d'integrer cette exemple à mon application (pour l'instant je cherche juste à intégrer l'exemple tel quel à mon projet sans y faire aucune modif...) et, que je click sur une colonne pour la trier ou sur l'une des flèche qui permet de faire la pagination, j'obtient tout le temps l'erreur suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    java.lang.ClassCastException
    	org.apache.myfaces.component.html.ext.HtmlDataTable.updateModelFromPreservedDataModel(HtmlDataTable.java:478)
    	org.apache.myfaces.component.html.ext.HtmlDataTable.processUpdates(HtmlDataTable.java:464)
    	javax.faces.component.UIForm.processUpdates(UIForm.java:196)
    	javax.faces.component.UIComponentBase.processUpdates(UIComponentBase.java:935)
    	javax.faces.component.UIViewRoot.processUpdates(UIViewRoot.java:363)
    	com.sun.faces.lifecycle.UpdateModelValuesPhase.execute(UpdateModelValuesPhase.java:81)
    	com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:200)
    	com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:90)
    	javax.faces.webapp.FacesServlet.service(FacesServlet.java:197)
    	org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:100)
    	org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:100)
    	org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:147)
    Visiblement il s'agit d'un problème de cast, mais je vois pas du tout comment résoudre mon problème

    Si vous avez besoin d'en savoir plus n'hesiter pas à demander, je suis vraiment a court d'idée....

    Merci d'avance !

  2. #2
    Expert confirmé
    Avatar de djo.mos
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    4 666
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 666
    Par défaut
    Bonjour.

    Il vaudrait mieux que tu nous montres :
    • La partie du backing-bean qui inclut le DataModel
    • La déclaration de la dataTable.
    • Les versions de MyFaces et Tomahawk que tu utilises.


    Merci.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 31
    Par défaut
    J'ai déjà eu des problèmes de cast avec MyFaces, essayes de donner un 'id' à tous les composants que tu utilise.

  4. #4
    Membre éclairé Avatar de maloups
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    332
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 332
    Par défaut
    Merci de vos réponse
    Medofree: qu'entends tu par composant ? est-ce que <h:outputText>, <f:facet>, <h:column>... sont pour toi des composant?

    djo.mos : J'ai vraiment fais du copier/coller des fichiers nécessaires pour faire tourner cette exemple sans les modifiers...
    Voici le backed-bean :
    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
     
    /*
     * Licensed to the Apache Software Foundation (ASF) under one
     * or more contributor license agreements.  See the NOTICE file
     * distributed with this work for additional information
     * regarding copyright ownership.  The ASF licenses this file
     * to you under the Apache License, Version 2.0 (the
     * "License"); you may not use this file except in compliance
     * with the License.  You may obtain a copy of the License at
     *
     *   http://www.apache.org/licenses/LICENSE-2.0
     *
     * Unless required by applicable law or agreed to in writing,
     * software distributed under the License is distributed on an
     * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
     * KIND, either express or implied.  See the License for the
     * specific language governing permissions and limitations
     * under the License.
     */
     
    package org.apache.myfaces.examples.listexample;
     
    import java.util.ArrayList;
    import java.util.Collections;
    import java.util.Comparator;
    import java.util.HashMap;
    import java.util.Iterator;
    import java.util.List;
    import java.util.Map;
     
    public class PagedSortableCarList extends SortableList
    {
    	private List cars = new ArrayList();
     
    	private Map carMap = new HashMap();
     
    	public PagedSortableCarList()
    	{
    		super("type");
    		for (int i = 100; i < 900; i++)
    		{
    			Object car = new SimpleCar(i, "Car Type " + i, (i % 2 == 0) ? "blue" : "green");
    			cars.add(car);
    			carMap.put(new Integer(i), car);
    		}
    	}
     
    	public List getCars()
    	{
    		sort(getSort(), isAscending());
    		return cars;
    	}
     
    	public void setCars(List cars)
    	{
    		// update the cars from the provided list
    		for (Iterator iter = cars.iterator(); iter.hasNext();)
    		{
    			SimpleCar car = (SimpleCar) iter.next();
    			SimpleCar oldCar = (SimpleCar) carMap.get(new Integer(car.getId()));
    			oldCar.setType(car.getType());
    			oldCar.setColor(car.getColor());
    		}
    	}
     
    	protected boolean isDefaultAscending(String sortColumn)
    	{
    		return true;
    	}
     
    	protected void sort(final String column, final boolean ascending)
    	{
    		Comparator comparator = new Comparator()
    		{
    			public int compare(Object o1, Object o2)
    			{
    				SimpleCar c1 = (SimpleCar) o1;
    				SimpleCar c2 = (SimpleCar) o2;
    				if (column == null)
    				{
    					return 0;
    				}
    				if (column.equals("type"))
    				{
    					return ascending ? c1.getType().compareTo(c2.getType()) : c2.getType()
    									.compareTo(c1.getType());
    				}
    				else if (column.equals("color"))
    				{
    					return ascending ? c1.getColor().compareTo(c2.getColor()) : c2.getColor()
    									.compareTo(c1.getColor());
    				}
    				else
    					return 0;
    			}
    		};
    		Collections.sort(cars, comparator);
    	}
    }
    Mon formulaire avec ma datatable :
    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
     
        <h:form>
         <t:dataTable id="data" cellspacing="0" cellpadding="0" border="1"
                      styleClass="scrollerTable"
                      headerClass="standardTable_Header"
                      footerClass="standardTable_Header"
                      rowClasses="standardTable_Row1,standardTable_Row2"
                      columnClasses="standardTable_Column,standardTable_ColumnCentered,standardTable_Column"
                      var="car"
                      value="#{pagedSort.cars}"
                      preserveDataModel="true"
                      rows="10"
                      rowId="#{car.type}"
                      rowOnClick="alert('rowId: ' + this.id)"
                      sortColumn="#{pagedSort.sort}"
                      sortAscending="#{pagedSort.ascending}"
                      preserveSort="true">
            <h:column>
                <f:facet name="header"><h:outputText value="Car id" /></f:facet>
                <h:outputText value="#{car.id}" />
            </h:column>
            <h:column>
                <f:facet name="header">
                    <t:commandSortHeader columnName="type" arrow="true" immediate="false">
                        <h:outputText value="Type" />
                    </t:commandSortHeader>
                </f:facet>
                <h:outputText value="#{car.type}" />
            </h:column>
            <h:column>
                <f:facet name="header">
                    <t:commandSortHeader columnName="color" arrow="true" immediate="false">
                        <h:outputText value="Color" />
                    </t:commandSortHeader>
                </f:facet>
                <h:inputText value="#{car.color}" >
                    <f:validateLength maximum="10"/>
                </h:inputText>
            </h:column>
        </t:dataTable>
     
        <h:panelGrid columns="1" styleClass="scrollerTable2" columnClasses="standardTable_ColumnCentered" >
            <t:dataScroller id="scroll_1"
                            for="data"
                            fastStep="10"
                            pageCountVar="pageCount"
                            pageIndexVar="pageIndex"
                            styleClass="scroller"
                            paginator="true"
                            paginatorMaxPages="9"
                            paginatorTableClass="paginator"
                            paginatorActiveColumnStyle="font-weight:bold;">
                <f:actionListener type="org.apache.myfaces.examples.listexample.DataScrollerActionListener"/>
                <f:facet name="first" >
                    <t:graphicImage url="images/arrow-first.gif" border="1" />
                </f:facet>
                <f:facet name="last">
                    <t:graphicImage url="images/arrow-last.gif" border="1" />
                </f:facet>
                <f:facet name="previous">
                    <t:graphicImage url="images/arrow-previous.gif" border="1" />
                </f:facet>
                <f:facet name="next">
                    <t:graphicImage url="images/arrow-next.gif" border="1" />
                </f:facet>
                <f:facet name="fastforward">
                    <t:graphicImage url="images/arrow-ff.gif" border="1" />
                </f:facet>
                <f:facet name="fastrewind">
                    <t:graphicImage url="images/arrow-fr.gif" border="1" />
                </f:facet>
            </t:dataScroller>
     
        </h:panelGrid>
        </h:form>
    Librairie utilisé :
    myfaces-api-1.1.5.jar
    myfaces-impl-1.1.5.jar
    tomahawk-1.1.6.jar
    jstl-1.1.2.jar
    Ainsi que quelques commons-*.jar

    En esperant que ca puisse vous aider... je commence vraiment à desespérer...

  5. #5
    Membre éclairé Avatar de maloups
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    332
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 332
    Par défaut
    Après un petit redémarage et une bonne nuit de sommeil, plus aucune erreurs à s'afficher (alors que je n'ai rien modifié...) mais quand je click sur ma colonne ou sur page suivante, la page se rafraichis, mais rien ne se passe (pas de tri, ni de page suivante...)

  6. #6
    Membre éclairé Avatar de maloups
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    332
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 332
    Par défaut
    Quelque chose m'interpelle, dans la déclaration de la datatable on a:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    rowOnClick="alert('rowId: ' + this.id)"
    Dans l'exemple officiel, quand on click sur l'une des ligne du tableau on obtient :
    Pièce jointe 15787

    Alors que dans mon exemple, quand je click sur une ligne, j'obtient :
    Pièce jointe 15788

    J'ai vraiment fais du copier/coller des fichiers nécessaires pour faire tourner cette exemple sans les modifiers...
    En fait, c'est pas tout a fait vrai... J'ai adapté ma jsp afin de pouvoir l'utiliser avec facelets... visiblement, ma page connait le javascript puisque l'alert apparait, mais pourquoi n'y a-t-il pas de valeur pour l'ID?

  7. #7
    Membre éclairé Avatar de maloups
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    332
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 332
    Par défaut
    J'ai toujours mon problème avec l'alert quand je click sur une ligne, mais maintenant mon tri et ma pagination fonctionnent ! Le coupable : Spring-2.0.5.jar, il m'a suffit de supprimer cette librairie pour que le tri se mette à fonctionner (ce qui ne m'arrange pas vraiment car cette librairie est indispensable au bon fonctionnement de l'application).

    Si quelqu'un avait une version compatible a me proposer, ca m'arrangerai beaucoup... Je continue mes recherche...

  8. #8
    Membre éclairé Avatar de maloups
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    332
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 332
    Par défaut
    J'ai beau fouiner partout, pas de solution a mon probleme...

    Je suis allé chercher toutes les dépendances de spring-2.0.5.jar, j'ai mis a jour mes librairies, mais rien n'y fait, dés que je remet la librairie de spring dans mon appli, le tri et la pagination ne fonctionne plus... A mon avis, il y a une librairie qui interfere avec spring mais laquelle

  9. #9
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2004
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 184
    Par défaut
    Citation Envoyé par maloups
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    rowOnClick="alert('rowId: ' + this.id)"
    Dans ton cas ça doit plutot être
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    rowOnClick="alert('rowId: ' + car.id)"

    Etant donné que ta variable vaut "car" dans ton datable

    PS: la traduction de library c'est bibliothèque

  10. #10
    Membre éclairé Avatar de maloups
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    332
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 332
    Par défaut
    Ta réponse semblait pas mal, mais a ma grande surprise, en mettant "car.id", l'alert ne s'affiche meme plus !!! Etrange non??

    PS : Désole pour librairie, c'est un abus de langage, bibibiblilibiliothèeque c'est un peu long a écrire, et library c'est pas francais... Mais j'vais quand même essayer de prendre l'habitude d'écrire library

  11. #11
    Expert confirmé
    Avatar de djo.mos
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    4 666
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 666
    Par défaut
    Bonjour
    Les gars, il s'agit de Javascript ici, pas de JSF
    Donc, car.id ne veut rien dire ici ... par contre this.id retourne l'identifiant (HTML) de l'élément courant (row ou <tr>).

    Sinon :
    • Evites preserveDataModel="true" ... ça n'apporte rien de bon
    • évites preserveSort="true", de même que plus haut
    • ajoutes fordId="true" à dataTable
    • ajoutes forceIdIndex="false" à dataTable
    • Euh ... c'est tout pour l'instant.


    J'attends ton retour.
    Bonne chance.

  12. #12
    Membre éclairé Avatar de maloups
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    332
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 332
    Par défaut
    J'ai mis a jour l'entete de ma datatable mais pas de changement...

    Le plus embettant c'est vraiment ce problème de compatibilité avec spring-2.0.5.jar... Personne n'a une idée??

    Je suis également ouvert à toute proposition sur les méthodes permettant de faire du tri et de la pagination en jsf

  13. #13
    Expert confirmé
    Avatar de djo.mos
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    4 666
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 666
    Par défaut
    Bonjour.
    Je crois qu'il vaudrait mieux nous ré-expliquer la chose : ton code a subi divers changements et même l'erreur a changé.
    Veux tu maloups nous donner ton nouveau code et le problème exact s'il te plaît ?

  14. #14
    Membre éclairé Avatar de maloups
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    332
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 332
    Par défaut
    pas de pb

    J'ai repris un exemple de myfaces permettant le tri et la pagination. Isoler dans un projet a part, aucun problème, mais dès que je souhaite l'intégrer à mon projet, le tri et la pagination ne fonctionne pas...
    La cause : La library "spring-2.0.5.jar", dès que je suprime cette librairie, le tri et la pagination fonctionne parfaitement . Le problème c'est que j'ai absolument besoin de cette librairy !!!! J'ai passé la journée d'hier à jongler entre différentes version de library pour essayer de rendre la chose compatible mais en vain...

    Voici 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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml"
    	xmlns:ui="http://java.sun.com/jsf/facelets"
    	xmlns:h="http://java.sun.com/jsf/html"
    	xmlns:f="http://java.sun.com/jsf/core"
    	xmlns:t="http://myfaces.apache.org/tomahawk">
    <body>
     
     
    <ui:composition template="/template.xhtml">
     
    	<div align="center"><ui:define name="title">
    	    Tri et Pagination
    	</ui:define> <ui:define name="body">
    		<f:view>
     
        <h:form>
         <t:dataTable id="data"
                      styleClass="scrollerTable"
                      headerClass="standardTable_Header"
                      footerClass="standardTable_Header"
                      rowClasses="standardTable_Row1,standardTable_Row2"
                      columnClasses="standardTable_Column,standardTable_ColumnCentered,standardTable_Column"
                      var="car"
                      value="#{pagedSort.cars}"
                      rows="10"
                      rowId="#{car.type}"
                      rowOnClick="alert('rowId: ' + this.id)"
                      sortColumn="#{pagedSort.sort}"
                      sortAscending="#{pagedSort.ascending}"
                      fordId="true"
                      forceIdIndex="false" >
            <h:column>
                <f:facet name="header"><h:outputText value="Car_id" /></f:facet>
                <h:outputText value="#{car.id}" />
            </h:column>
            <h:column>
                <f:facet name="header">
                    <t:commandSortHeader columnName="type" arrow="true" immediate="false">
                        <h:outputText value="Type" />
                    </t:commandSortHeader>
                </f:facet>
                <h:outputText value="#{car.type}" />
            </h:column>
            <h:column>
                <f:facet name="header">
                    <t:commandSortHeader columnName="color" arrow="true" immediate="false">
                        <h:outputText value="Color" />
                    </t:commandSortHeader>
                </f:facet>
                <h:inputText value="#{car.color}" >
                    <f:validateLength maximum="10"/>
                </h:inputText>
            </h:column>
        </t:dataTable>
     
        <h:panelGrid columns="1" styleClass="scrollerTable2" columnClasses="standardTable_ColumnCentered" >
            <t:dataScroller id="scroll_1"
                            for="data"
                            fastStep="10"
                            pageCountVar="pageCount"
                            pageIndexVar="pageIndex"
                            styleClass="scroller"
                            paginator="true"
                            paginatorMaxPages="9"
                            paginatorTableClass="paginator"
                            paginatorActiveColumnStyle="font-weight:bold;">
                <f:actionListener type="org.apache.myfaces.examples.listexample.DataScrollerActionListener"/>
                <f:facet name="first" >
                    <t:graphicImage url="images/arrow-first.gif" border="1" />
                </f:facet>
                <f:facet name="last">
                    <t:graphicImage url="images/arrow-last.gif" border="1" />
                </f:facet>
                <f:facet name="previous">
                    <t:graphicImage url="images/arrow-previous.gif" border="1" />
                </f:facet>
                <f:facet name="next">
                    <t:graphicImage url="images/arrow-next.gif" border="1" />
                </f:facet>
                <f:facet name="fastforward">
                    <t:graphicImage url="images/arrow-ff.gif" border="1" />
                </f:facet>
                <f:facet name="fastrewind">
                    <t:graphicImage url="images/arrow-fr.gif" border="1" />
                </f:facet>
            </t:dataScroller>
     
        </h:panelGrid>
     
     
        </h:form>
     
     
     
    		</f:view>
    	</ui:define></div>
     
    </ui:composition>
    </body>
    </html>
    Plus le package : package org.apache.myfaces.examples.listexample
    présent dans le zip exemple de myfaces dont voici le backedbean :
    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
     
    /*
     * Licensed to the Apache Software Foundation (ASF) under one
     * or more contributor license agreements.  See the NOTICE file
     * distributed with this work for additional information
     * regarding copyright ownership.  The ASF licenses this file
     * to you under the Apache License, Version 2.0 (the
     * "License"); you may not use this file except in compliance
     * with the License.  You may obtain a copy of the License at
     *
     *   <a href="http://www.apache.org/licenses/LICENSE-2.0" target="_blank">http://www.apache.org/licenses/LICENSE-2.0</a>
     *
     * Unless required by applicable law or agreed to in writing,
     * software distributed under the License is distributed on an
     * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
     * KIND, either express or implied.  See the License for the
     * specific language governing permissions and limitations
     * under the License.
     */
    package org.apache.myfaces.examples.listexample;
     
     
     
    /**
     * Convenient base class for sortable lists.
     * @author Thomas Spiegl (latest modification by $Author: grantsmith $)
     * @version $Revision: 472610 $ $Date: 2006-11-08 20:46:34 +0100 (Mi, 08 Nov 2006) $
     */
    public abstract class SortableList
    {
        private String _sort;
        private boolean _ascending;
     
        protected SortableList(String defaultSortColumn)
        {
            _sort = defaultSortColumn;
            _ascending = isDefaultAscending(defaultSortColumn);
        }
     
        /**
         * Sort the list.
         */
        protected abstract void sort(String column, boolean ascending);
     
        /**
         * Is the default sort direction for the given column "ascending" ?
         */
        protected abstract boolean isDefaultAscending(String sortColumn);
     
     
        public void sort(String sortColumn)
        {
            if (sortColumn == null)
            {
                throw new IllegalArgumentException("Argument sortColumn must not be null.");
            }
     
            if (_sort.equals(sortColumn))
            {
                //current sort equals new sortColumn -> reverse sort order
                _ascending = !_ascending;
            }
            else
            {
                //sort new column in default direction
                _sort = sortColumn;
                _ascending = isDefaultAscending(_sort);
            }
     
            sort(_sort, _ascending);
        }
     
        public String getSort()
        {
            return _sort;
        }
     
        public void setSort(String sort)
        {
            _sort = sort;
        }
     
        public boolean isAscending()
        {
            return _ascending;
        }
     
        public void setAscending(boolean ascending)
        {
            _ascending = ascending;
        }
    }
    Voici la liste des librairy que j'utilise :
    Pièce jointe 15857

    Je pense que les principales informations sont là ...

    Mais comme je l'ai dis, je suis également preneur de toute autre solution permettant de réaliser le meme traitement.

Discussions similaires

  1. [ZF 1.10] Mémorisation formulaire de filtre et de tri avec pagination
    Par ilalaina dans le forum Zend_Form
    Réponses: 1
    Dernier message: 24/06/2010, 10h23
  2. [DisplayTag] Tri et pagination ne font pas bon ménage
    Par tiboudchou dans le forum Taglibs
    Réponses: 4
    Dernier message: 31/03/2010, 12h22
  3. Gridview tri et pagination
    Par Ya7yaKech dans le forum ASP.NET
    Réponses: 2
    Dernier message: 17/05/2009, 19h06
  4. Tri et pagination
    Par Whombat dans le forum Langage
    Réponses: 4
    Dernier message: 01/02/2009, 04h48
  5. Tri et pagination du datagrid qui ne marche pas
    Par paradeofphp dans le forum ASP.NET
    Réponses: 2
    Dernier message: 30/05/2007, 17h00

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