to get a DAO or service object result.setTotalCount(dao.getUserCount()); Collection users = dao.getUsers(query.getFrom(), query.getCount()); result.setItems(users.iterator()); } public IModel model(Object object) { return new DetachableUserModel(objecT); } } An example of situation when the row count can't be determined. The pagination then only allows to advance by one page. The idea is to retrieve n + 1 rows when n rows are requested to decide whether the next page should be available:
IDataSource source = new IDataSource() { public void query(IQuery query, IQueryResult result) { UserDao dao = DaoManager.getUserDao(); // code to get a DAO or service object Collection users = dao.getUsers(query.getFrom(), query.getCount() + 1); if (user.size() < query.getCount() + 1) { result.setTotalCount(IQueryResult.NO_MORE_ITEMS); } else { result.setTotalCount(IQueryResult.MORE_ITEMS); } result.setItems(users.iterator()); } public IModel model(Object object) { return new DetachableUserModel(objecT); } }
@author Matej Knopp