ExtendedDataModel 的 walk 方法中的 SequenceRange 在哪里定义?

Where is the SequenceRange from the walk-method from ExtendedDataModel defined?

ajax4jsf 中的 ExtendedDataModel 使用了一个名为 walk 的方法,看起来像这样:

public void walk(FacesContext ctx, DataVisitor dv, Range range, Object argument){}

此方法在我的应用程序中被多次调用。互联网上的一些主题似乎说后者是由 xhtml 中的 rows="x" 定义的。但是,对我来说 range 总是定义为 0 (firstRow) - -1 (getRows).

所以我想知道这个range是在哪里定义的,所以我可以弄清楚为什么传递给它的参数是错误的。到目前为止,调试和谷歌搜索对我没有帮助。

范围表示table中显示的数据的可见部分。如果你有分页器,那么分页器显示显示哪一页(=从哪一行到哪一行)数据。

问题可能出在数据 table 的 rows 属性值不正确(例如缺少 rows 属性)。

其他地方可能是数据模型的错误实现。数据模型 class 的对象可用作 rich:dataTable.

中显示的数据的存储

实例:

public class VSDataModel<RecordType> extends ExtendedDataModel<RecordType> implements Arrangeable {

    private final FetchList<RecordType> list;

    @Override
    public void walk(FacesContext ctx, DataVisitor visitor, Range range, Object obj) {
        try {
            int firstRow = ((SequenceRange) range).getFirstRow();
            int numberOfRows = ((SequenceRange) range).getRows();
            if(list == null) {
                throw new RuntimeException("Underlying list is null!");
            }
            if(list.getList() == null || firstRow != list.getFirstRow()) {
                list.fetch(firstRow, numberOfRows);
            }
            for (RecordType elem : list.getList()) {
                visitor.process(ctx, list.getPK(elem), obj);
            }
        } catch(Exception e) {
            throw new RuntimeException(e);
        }
    }
}

用于Javaprivate VSDataModel<Record> dependentList;和html <rich:dataTable value="#{bean.dependentList}" rows="#{referenceData.recordsPerPage}">