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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  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?

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