Domanda

Ho avuto un problema su una pagina JSF. DataSCroller non ha modificato la paginazione del clic dati su una serie di pagina (rimangono comunque nella prima pagina della paginazione).

  • Richfaces: 3.3.2.sr1
  • JSF: 1.2
  • JBoss 5.0.1

Questo codice non cambia la paginazione:

<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" />

L'ho risolto definendo il sortOrder attributo. Funziona bene (solo una differenza: sortOrder="ASCENDING" su una colonna):

<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 domanda è: perché dobbiamo definire l'ordine per correggere la paginazione dati utilizzando DataSCroller? Qualche idea ?

Modificare : Codice 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;
    }

}
È stato utile?

Soluzione

È un bug in richfaces:

Tablesorting - integrato - Le pagine non possono essere commutate da DataSCroller

Se si fa clic sulla pagina numerata (ad esempio 2) nello stato iniziale, la pagina non è stata commutata.

La tabella è stata nuovamente resitta dopo aver fatto clic sull'intestazione della colonna ordinata.

L'aggiornamento a 3.3.3.finale dovrebbe aiutare.

Per quanto riguarda ExtendedTableDataModel:

Esso è Disponibile in 3.3.3.finale (org.richfaces.model.ExtendedTableDataModel In Richfaces-Impl-3.3.3.final.jar). Ed è disponibile anche nella documentazione: http://docs.jboss.org/richfaces/3.3.x/3.3.3.final/en/apidoc_impl/ (../apidoc_impl/ viene utilizzato per Richfaces-impl, ../apidoc/ è usato per Richfaces-ui).

è non Disponibile in RF4. In RF4 esplora queste classi:

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

AGGIORNARE:

Uso ExtendedTableDataModifiableModel invece di ExtendedTableDataModel:

new ExtendedTableDataModifiableModel(dataProvider);

O anche meglio (quando l'elenco viene utilizzato come fonte di dati come nel tuo caso):

new ListDataModel(list);

Altri suggerimenti

Ha testato il codice utilizzando RichFaces 3.3.3 e funziona bene. La paginazione può essere cambiata in entrambi i casi. Quindi penso che la sorto e la paginazione dati non abbiano una relazione per influenzare gli altri.

E ho trovato il Nota di rilascio di richfaces - versione 3.3.3.beta1 ha alcune correzioni di bug sul rich:datascroller . Forse puoi passare a Richfaces 3.3.3 nel tuo ambiente Dev per vedere se i problemi sono ancora lì.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top