1

Jsf ページで問題が発生しました。データスクローラーは、多くのページをクリックしても dataTable のページネーションを変更しませんでした (ページネーションの最初のページにとどまります)。

  • リッチフェイス: 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属性を定義して解決しました。これは正常に機能します (1 つの違いのみ: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 を使用してデータテーブルのページネーションを修正するために sortOrder を定義する必要があるのはなぜですか? 何か案が ?

編集:データプロバイダーコード

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;
    }

}
4

2 に答える 2

1

これは RichFaces のバグです:

TableSorting - 組み込み - DataScroller でページを切り替えることはできません

初期状態でページ番号(例:2)をクリックしてもページが切り替わらない問題を修正しました。

並べ替えられた列のヘッダーをクリックした後、テーブルが適切に再レンダリングされました。

3.3.3.Final にアップグレードすると役立つはずです。

についてExtendedTableDataModel

3.3.3.Final ( richfaces-impl-3.3.3.Final.jar 内) で利用できます。org.richfaces.model.ExtendedTableDataModelまた、ドキュメントでも利用できます: 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);
于 2011-09-12T22:03:08.997 に答える
1

richfaces 3.3.3 を使用してコードをテストしたところ、問題なく動作しました。どちらの場合もページネーションを変更できます。したがって、sortOrder とデータテーブルのページネーションには、互いに影響を与える関係はないと思います。

そして、RichFaces のリリース ノート - バージョン 3.3.3.BETA1には、rich:datascroller. おそらく、DEV 環境で richfaces 3.3.3 にアップグレードして、問題がまだあるかどうかを確認できます。

于 2011-09-12T13:30:53.133 に答える