Вопрос

У меня была проблема на странице JSF. DataScroller не изменял страницу на основе данных на несколько страниц (все еще оставайтесь на первой странице страниц).

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

Этот код не меняет страницу:

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

Я решил это определить sortOrder атрибут. Это работает нормально (только одно отличие: sortOrder="ASCENDING" на столбце):

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

Вопрос в том, почему мы должны определить сортировку, чтобы исправить дату -дата, используя данные DataScroller? Есть идеи ?

Редактировать : Код 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;
    }

}
Это было полезно?

Решение

Это ошибка в Richfaces:

Tablesorting - встроенные страницы не могут быть переключены с помощью данных DataScroller

При нажатии на пронумерованную страницу (например, 2) в начальном состоянии Пейдж не был переключен.

Таблица была повторно повторно заполнена после нажатия заголовка сортированного колонны.

Обновление до 3.3.3.final должно помочь.

Касательно ExtendedTableDataModel:

Это является Доступно в 3.3.3.final (org.richfaces.model.ExtendedTableDataModel в Richfaces-Impl-3.3.3.final.jar). И это также доступно в документации: http://docs.jboss.org/richfaces/3.3.x/3.3.3.final/en/apidoc_impl/ (../apidoc_impl/ используется для Richfaces-impl, ../apidoc/ используется для Richfaces-ui).

это нет Доступно в RF4. В RF4 исследуйте эти классы:

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

ОБНОВИТЬ:

Использовать ExtendedTableDataModifiableModel вместо ExtendedTableDataModel:

new ExtendedTableDataModifiableModel(dataProvider);

Или даже лучше (когда список используется в качестве источника данных, как в вашем случае):

new ListDataModel(list);

Другие советы

Протестировал свой код, используя Richfaces 3.3.3, и он работает нормально. Парень может измениться в обоих случаях. Поэтому я думаю, что сортировка и дата -табличная страница не имеют отношения, чтобы повлиять на друг друга.

И я нашел Выпуск примечания Richfaces - Версия 3.3.3.beta1 есть некоторые исправления ошибок в rich:datascroller Анкет Возможно, вы можете перейти на Richfaces 3.3.3 в своей среде Dev, чтобы увидеть, есть ли проблемы еще.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top