richfaces datascroller で真のページネーションを行う方法を理解しようとしています。
現在、私のクエリはテーブルからすべてのデータを取得しています。データスクローラーの次のボタンをクリックすると、次の 20 行のデータベースがクエリされます。
行を制限するクエリを作成する方法は理解していますが、データスクローラーの次のボタンで特定のメソッドを呼び出す方法がわかりません。
多くの人が Richfaces フォーラムに潜在的な解決策を投稿しているように見えますが、それらはすべて dataModel を使用しています。私はORMを使用していないので、これらのソリューションを私が持っているものにどのように適合させることができるかわかりません。
どんな助けでも大歓迎です。
<rich:extendedDataTable id="resultsTable" value="#{tableBacking.results}" var="results" sortMode="single" rowKeyVar="row">
<rich:columns value="#{tableBacking.columns == null ? '' : tableBacking.columns}" var="columns" index="ind" id="column#{ind}" sortBy="#{results[ind].data}" rendered="#{tableBacking.columns != null}">
<f:facet name="header">
<h:outputText value="#{columns.columnDescription}" />
</f:facet>
<h:outputText value="#{results[ind].data}" />
</rich:columns>
</rich:extendedDataTable>
<rich:datascroller for="resultsTable" page="#{tableBacking.page}" renderIfSinglePage="false" />
バッキングビーン
public class TableBacking {
private List<List<TableData>> results = null;
private int page = 0;
public int getPage() {
return page;
}
public void setPage(int page) {
this.page = page;
}
public List<List<TableData>> getResults() throws Exception {
return results;
}
public void setResults(List<List<TableData>> results) {
this.results = results;
}
private void getData(String whereClause) {
try {
DataDao dd = new DataDao();
results = dd.getData(); // dd.getData just runs a query on a table and puts the results in a List of lists.
} catch (Exception e) {}
}