rich:datascroller基于记录总数的页数,而不是来自数据表的行数

时间:2016-02-18 13:41:37

标签: richfaces jsf-1.2

我不知道我是对的,但据我所知,rich:datascroller上显示的页数基于填充数据表的列表大小。

但事情就是这样:让我们说总共会有20条记录显示出来。我只想查询其中的10个,并使其在datascroller上有两个页面。我无法查询我的所有记录,因为有时可能超过300.000条记录。我不能把它留在记忆中。无论如何,这可以实现吗?

到目前为止,这是我的代码:

<rich:datascroller for="grdPemissoes" maxPages="5"
    reRender="contentResultadoTable, labelResultados"
    page="#{actionDivisao.pageIndex}"
    pageVar="#{actionDivisao.totalPages}"
    eventsQueue="queueScroller"
</rich:datascroller>
<rich:dataTable id="grdPemissoes" rowClasses=" ,td_cinza"
    value="#{actionDivisao.listaResultados}"
    styleClass="table table-search-result"
    var="divisao" rowKeyVar="row"
    rows="#{actionDivisao.registrosPorPagina}">
                        //columns
</rich:dataTable>

由于总共有10条记录,因此无法显示任何页面。 我正在使用richfaces 3和jsf 1.2。

1 个答案:

答案 0 :(得分:1)

如果要更改默认行为,表格使用dataModel(javax.faces.model.DataModel或扩展它的类),例如返回与已加载的记录数不同的大小,您需要实现自己的dataModel并将其传递给表的value属性:

public class MyDataModel extends org.ajax4jsf.model.ExtendedDataModel {

    @Override
    public int getRowCount() {
        return this.list.size() + 10; // or something
    }

    …
}

您可以查看showcase

中的示例