Question

J'ai eu un problème sur une page JSF. Le datascroller n'a pas changé pagination du clic dataTable sur un certain nombre de page (toujours rester sur la première page de la pagination).

  • RichFaces: 3.3.2.SR1
  • Jsf: 1.2
  • JBoss 5.0.1

Ce code ne change pas le Pagination:

<rich:extendedDataTable id="tableDataTable" value="#{beanController.listTableDataModel}" 
    var="tableItem" selectionMode="single"
    rows="3" width="150px" height="100px" selection="#{beanController.tableSelection}">

    <rich:column sortBy="#{tableItem.code}" width="150px" label="#{msg.table}">
        <h:outputText value="#{tableItem.code}" />
    </rich:column>
    <rich:column sortBy="#{tableItem.code}" width="150px" label="#{msg.table}">
        <h:outputText value="#{tableItem.code}" />
    </rich:column>
</rich:extendedDataTable>
<rich:datascroller id="tableDataScroller" align="center" for="tableDataTable" renderIfSinglePage="false" />

I a résolu définissant l'attribut sortOrder. Cela fonctionne bien (une seule différence: sortOrder="ASCENDING" sur une colonne):

<rich:extendedDataTable id="tableDataTable" value="#{beanController.listTableDataModel}" 
    var="tableItem" selectionMode="single"
    rows="3" width="150px" height="100px" selection="#{beanController.tableSelection}">

    <rich:column sortBy="#{tableItem.code}" width="150px" label="#{msg.table}" sortOrder="ASCENDING">
        <h:outputText value="#{tableItem.code}" />
    </rich:column>
    <rich:column sortBy="#{tableItem.code}" width="150px" label="#{msg.table}">
        <h:outputText value="#{tableItem.code}" />
    </rich:column>
</rich:extendedDataTable>
<rich:datascroller id="tableDataScroller" align="center" for="tableDataTable" renderIfSinglePage="false" />

La question est de savoir pourquoi nous devons définir le sortOrder pour corriger la pagination datatable en utilisant datascroller? Toute idée?

Modifier : Code DataProvider

public class BeanDataProvider implements DataProvider<Bean> {


    private static final long serialVersionUID = -3539248649798786324L;

    public BeanDataProvider() {
    }

    public BeanDataProvider(ArrayList<Bean> beans) {
        this.beans = beans;
    }

    private List<Bean> beans;


    public Bean getItemByKey(Object paramObject) {
        Bean resultat = null;
        for (Bean bean : this.getBeans()) {
            if (bean.getIdentifiant().equals(paramObject)) {
                resultat = bean;
                break;
            }
        }
        return resultat;
    }


    public List<Bean> getItemsByRange(int paramInt1, int paramInt2) {
        return this.getBeans().subList(paramInt1, paramInt2);
    }


    public Object getKey(Bean paramT) {
        return paramT.getIdentifiant();
    }


    public int getRowCount() {
        return this.getBeans().size();
    }


    public List<Bean> getBeans() {
        if (beans == null) {
            beans = new ArrayList<Bean>();
        }
        return beans;
    }


    public void setbeans(List<Bean> beans) {
        this.beans = beans;
    }

}
Était-ce utile?

La solution

Il est un bogue dans RichFaces:

TableSorting - Intégré - pages ne peut être commuté par DataScroller

Lorsque cliqué sur la page numérotée (par exemple 2) dans l'état initial, à la page n'a pas été activé.

Le tableau a été re-rendu bien après avoir cliqué sur les colonnes de tri en-tête.

Mise à niveau vers 3.3.3.Final devrait aider.

En ce qui concerne ExtendedTableDataModel:

est disponible en 3.3.3.Final (org.richfaces.model.ExtendedTableDataModel dans richfaces-impl-3.3.3.Final.jar). Et il est également disponible dans la documentation: http: / /docs.jboss.org/richfaces/3.3.X/3.3.3.Final/en/apidoc_impl/ (../apidoc_impl/ est utilisé pour richfaces-impl, ../apidoc/ est utilisé pour richfaces- ui).

Il est pas disponible en RF4. Dans RF4 explorer ces classes:

org.richfaces.model.ArrangeableState
org.ajax4jsf.model.ExtendedDataModel
org.richfaces.model.ArrangeableModel

Mise à jour:

Utilisation ExtendedTableDataModifiableModel au lieu de ExtendedTableDataModel:

new ExtendedTableDataModifiableModel(dataProvider);

Ou mieux encore (lorsque la liste est utilisée comme source de données comme dans votre cas):

new ListDataModel(list);

Autres conseils

Testée votre code à l'aide richfaces 3.3.3 et il fonctionne très bien changé peut .La pagination dans les deux cas. Je pense donc que le sortOrder et la pagination datatable n'ont pas rapport à affecter les uns des autres.

Et je trouve la note de libération de RichFaces - Version 3.3.3. BETA1 a quelques corrections de bugs sur le rich:datascroller. Peut-être que vous pouvez passer à richfaces 3.3.3 dans votre environnement DEV pour voir si les problèmes sont toujours là.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top