1

レコードのリストを表示するために、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();
    }
}
4

0 に答える 0