====== Paginação ====== Abaixo está descrito, passo a passo, como realizar paginação de listagens em Struts e em JSF. ===== Struts ===== **1.** Antes de realizar a busca, deve-se configurar o DAO para informar os dados da paginação: navegaPagina(dao, form); convenioDAO.setPaginable(true); convenioDAO.setPageSize(15); // Tamanho da página convenioDAO.setPageNum(form.getPageNum()); // Página atual **2.** Dentro do DAO, deve-se executar uma consulta para retornar o total de registros da listagem e alterar a consulta original para trazer apenas os dados da página atual, conforme o código abaixo. Query q = getSession().createQuery("from Entidade"); if (isPaginable()){ if (getCount() == 0) { Query count = getSession().createQuery("select count(*) from Entidade"); setCount(((Long) count.uniqueResult()).intValue()); } q.setFirstResult(((getPageNum() - 1) * getPageSize())); q.setMaxResults(getPageSize()); } return q.list(); **3.** Após colocar o código da consulta na action, salvar os dados da paginação conforme o código abaixo: List lista = dao.findAll(); setAttributePaginacao(req, dao); req.setAttribute("paginable", "true"); req.setAttribute("lista", lista); **4.** Utilizar a tag para renderizar na tela o controle da paginação. // Pode-se passar atributos hidden para se a action precisar. ===== JavaServer Faces ===== **1. ** Acrescentar ao método em que a consulta da listagem será realizada um parâmetro do tipo ''PagingInformation''. Se o paging for diferente de null, executar uma consulta para retornar a quantidade total de registros da listagem. Setar o total no objeto paging e modificar a consulta principal para trazer apenas os dados da página atual, conforme o código abaixo. public List findByXyz(..., PagingInformation paging) { Query q = getSession().createQuery(hql); // Setar parâmetros... if(paging != null){ Query count = getSession().createQuery(countHql); // Setar parâmetros... paging.setTotalRegistros(((Long) count.uniqueResult()).intValue()); q.setFirstResult(paging.getPaginaAtual() * paging.getTamanhoPagina()); q.setMaxResults(paging.getTamanhoPagina()); } return q.list(); } **2.** No managed bean, informar o tamanho da página utilizando o método setTamanhoPagina() e chamar o método do DAO, utilizando o método getPaginacao() para informar o parâmetro de paginação ao DAO. Ver código abaixo. public List getAll(){ //Define quandos itens serão exibidos setTamanhoPagina(40); return getDao(EntidadeDao.class).findXyz(..., getPaginacao()); } **3.** Colocar na JSP o código para mudar de página:


Registro(s) Encontrado(s)