Tôi đang cố gắng tìm ra cách thực hiện phân trang đúng với richfaces datascroller.Richfaces 3 cách làm cho bộ dữ liệu thực hiện phân trang đúng
Hiện tại truy vấn của tôi kéo tất cả dữ liệu từ một bảng và tôi muốn nó khi bạn nhấp vào nút tiếp theo của bộ dữ liệu, nó sẽ truy vấn db cho 20 hàng tiếp theo.
Tôi hiểu cách viết truy vấn để giới hạn các hàng, nhưng tôi không chắc chắn làm thế nào để có được nút tiếp theo của bộ dữ liệu để gọi một phương thức cụ thể.
Tôi thấy có rất nhiều người đăng trên diễn đàn Richfaces với các giải pháp tiềm năng, nhưng tất cả họ đều sử dụng dataModel. Vì tôi không sử dụng ORM, tôi không chắc chắn làm thế nào tôi có thể phù hợp với những giải pháp này cho những gì tôi có.
Mọi trợ giúp đều được đánh giá cao.
<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" />
Sao đậu
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) {}
}
Vấn đề tôi đang gặp với giải pháp này là datascroller không render, vì tôi có hàng DataTable của tôi đặt thành 20 và khi trang tải, nó chỉ nhận được 20 hàng. Bạn có biết làm thế nào để có được xung quanh này? Có cách nào để nói cho datascroller số lượng tối đa của hàng để nó biết bao nhiêu trang để tính toán? – Catfish
Tôi không chắc tôi hiểu ý bạn là gì bởi "' bạn chỉ có thể tải id của các phần tử trên phần còn lại của trang và sau đó khi bạn truy cập trang tải chúng dựa trên id' " – Catfish
Bạn nói rằng bạn không sử dụng ORM. Tôi đã sử dụng giải pháp này với Hibernate, tải toàn bộ dữ liệu nhưng một số thuộc tính trong tải chậm, với điều này, khi tôi yêu cầu một số trang tôi có thể tải các đối tượng và ngăn chặn trường hợp ngoại lệ tải lười biếng. Trong trường hợp của bạn, tôi nghĩ bạn có thể lưu trữ các đối tượng * giả * (chỉ có thuộc tính id được gán) trong các trang không nhìn thấy được. Làm thế nào để đạt được điều đó? Tải toàn bộ danh sách id từ đầu và chỉ lấy thông tin tương đối khi cần. Tôi không biết làm thế nào mô hình của bạn hoạt động, tôi chỉ đưa ra một ý tưởng. –