Próbuję dowiedzieć się, jak zrobić prawdziwą paginację z datascroller richfaces.Richfaces 3 jak uczynić datascroller prawdziwą paginacją?
Obecnie moje zapytanie pobiera wszystkie dane z tabeli i chcę je, więc po kliknięciu następnego przycisku z datascroller, zapyta db do następnych 20 wierszy.
Rozumiem, jak napisać zapytanie, aby ograniczyć wiersze, ale nie jestem pewien, jak uzyskać następny przycisk urządzenia do przenoszenia danych w celu wywołania konkretnej metody.
Widzę, że wiele osób publikuje na forach Richfaces z potencjalnymi rozwiązaniami, ale wszystkie używają DataModel. Ponieważ nie używam ORM, nie jestem pewien, w jaki sposób mogę dopasować te rozwiązania do tego, co mam.
Każda pomoc jest doceniana.
<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" />
Backing Bean
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) {}
}
Problem mam z tego rozwiązania jest to, że nie jest świadczenie datascroller ponieważ Mam DataTable wiersze ustawiono na 20, a kiedy ładuje się strona, dostaje tylko 20 wierszy. Czy wiesz, jak sobie z tym poradzić? Czy istnieje sposób na przekazanie do dziennika danych maksymalnej liczby wierszy, aby wiedzieć, ile stron należy obliczyć? – Catfish
Nie jestem pewien, czy rozumiem, co masz na myśli przez "" możesz wczytać tylko identyfikatory elementów na pozostałych stronach, a później, gdy masz zamiar uzyskać dostęp do strony, załaduj je na podstawie identyfikatora " – Catfish
Ty powiedziałeś, że nie korzystasz z ORM. Użyłem tego rozwiązania z Hibernate, ładując całe dane, ale niektóre cechy w leniwym ładowaniu, z tym, kiedy zażądam jakiejś strony, mogę załadować te obiekty i zapobiec wyjątkom leniwego ładowania. W twoim przypadku myślę, że możesz przechowywać * fałszywe * obiekty (które tylko będą miały przypisany atrybut id) na niewidocznych stronach. Jak to osiągnąć? Ładowanie całej listy id od początku i pobieranie względnych informacji tylko wtedy, gdy jest to potrzebne. Nie wiem, jak działa twój model, po prostu wpadam na pomysł. –