レコードのリストを表示するために、primefaces のデータテーブルを使用しています。ただし、ページへの移動中に load 内部メソッド (オーバーライド) を 2 回呼び出します。この動作は、パフォーマンスに影響します。
部分的なサーバー側コード:
public void getInternalList() {
try {
dataList = service.getInternalDetails(userId, 0, 5);
if (null != dataList) {
// Getting the current page data using lazy loading
lazyModelEmployees = new LazyDataModel<Employee>() {
@Override
public List<Employee> load(int first, int pageSize, String arg2, SortOrder arg3, Map<String, String> arg4) {
List<Employee> currentPageEmployeeList = null;
try {
currentPageEmployeeList = service.getInternalDetails(userId, first, pageSize);
} catch (Exception e) {
exceptionHandler(e);
}
if (arg2 != null) {
Collections.sort(currentPageEmployeeList, new LazySorter(arg2, arg3));
}
int dataSize = currentPageEmployeeList.size();
this.setRowCount(dataSize);
if (dataSize > pageSize) {
try {
return currentPageEmployeeList.subList(first, first + pageSize);
} catch (IndexOutOfBoundsException e) {
return currentPageEmployeeList.subList(first, first + (dataSize % pageSize));
}
} else {
return currentPageEmployeeList;
}
}
};
lazyModelEmployees.setRowCount(dataList.size());
lazyModelEmployees.setPageSize(5);
}
} catch (Exception e1) {
e1.printStackTrace();
}
}