Paginação com Spring MVC

Bom dia.

Alguém saberia me dizer se o Spring 3 possuí algum “facilitador” para fazer uma paginação em uma view ?

Porque tenho uma página onde é exibido todos os registros de uma entidade específica, porém não é viável mostrar tudo numa página só, ficaria extremamente lento, por isso quero fazer uma paginação e mostrar 10 registros por página, pensei em fazer um @Controller que recebe um range e ele retorna os registros do banco dentro deste range, mas a idéia se complicou, ficaria muito bagunçado.

Portanto se o Spring tiver algo pronto para a paginação, facilitaria muito minha vida.

Obrigado.

Usa o Display-tag na view e pagina o banco pelo hibernate/jpa ou pelo proprio jdbctemplate

sempre faço um rotina na mão tambem não conheco nenhuma biblioteca, a não ser o display tag mesmo. Mais nunca usei ele .

Tem algum exemplo com o jdbctemplate ? ou até mesmo um link pra mim dar uma olhada.

Obrigado.

Já pensou em usar algum componente JQuery (ou algum outro javascript) pra fazer a paginação?
Eu particularmente acho um saco ficar clicando “próxima página” e esperar o servidor buscar os próximos registros e atualizar a tabela. Com javascript, a tabela fica rápida e sem o “delay” ao trocar de página.

[quote=Rendrys]Já pensou em usar algum componente JQuery (ou algum outro javascript) pra fazer a paginação?
Eu particularmente acho um saco ficar clicando “próxima página” e esperar o servidor buscar os próximos registros e atualizar a tabela. Com javascript, a tabela fica rápida e sem o “delay” ao trocar de página.[/quote]

É, vou fazer algo assim mesmo, só tenho que pensar num modo de usar o JQuery, porque os dados serão exibidos em thumbnails(quadrados com imagem+titulo+descrição)…então quero exibir 10 thumbnails por pagina.

Mas deve ser simples, vou tentar aqui e posto a solução, obrigado pela ajuda ai.

Tem algum exemplo com o jdbctemplate ? ou até mesmo um link pra mim dar uma olhada.

Obrigado.[/quote]

Primeiro resultado do google por “pagination jdbctemplate

Eu tenho esse trecho num projeto de teste meu:

<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<head>
<title>Blog do Adriano</title>
<script type='text/javascript'
	src='<c:url value="/resources/js/jquery-1.7.2.min.js"/>'></script>
</head>

<script type="text/javascript">
	$(function() {
		var dados = jQuery(this).serialize();
		var proximo = 1;

		jQuery.ajax({
			type : "get",
			url : "pagina/" + proximo,
			data : dados,
			success : function(data) {
				$('#conteudo').append( data);				
			}
	});	
 	jQuery('#ajax_form').submit(function() {
		var dados = jQuery(this).serialize();
		var proximo = 2;
		jQuery.ajax({
			type : "get",
			url : "pagina/" + proximo,
			data : dados,
			success : function(data) {
				$('#conteudo').append( data);
				//alert(data);
			}
		});
		return false;
	});	    
});
	jQuery(document).ready(function() {		
			});
</script>
<div id="conteudo"></div>

<form method="post" action="" id="ajax_form">
	<label><input type="submit" name="enviar" value="Mais" /></label>
</form>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<head>
<script type='text/javascript'
	src='<c:url value="/resources/js/jquery-1.7.2.min.js"/>'></script>
</head>
<div>
	<c:forEach items="${posts}" var="post">
		<c:url var="url" value="/posts/${post.id}" />
		<h2>
			<a >${post.title}</a>
		&lt;/h2&gt;
				${post.body}			
			&lt;h3&gt;&lt;/h3&gt;

		<p >
			&lt;time&gt; ${post.dataCriacao} &lt;/time&gt;
		</p>
	&lt;/c:forEach&gt;
	&lt;%-- 		&lt;c:if test=&quot;${proximo != 0 }&quot;&gt; --%&gt;
	&lt;%-- 			&lt;a href=&quot;&lt;c:url value=&quot;/${proximo}&quot;/&gt;&quot;&gt;Próximo</a> --%&gt;
	&lt;%-- 		&lt;/c:if&gt; --%&gt;
	&lt;%-- 		&lt;c:if test=&quot;${anterior != 0 }&quot;&gt; --%&gt;
	&lt;%-- 			&lt;a href=&quot;&lt;c:url value=&quot;/${anterior}&quot;/&gt;&quot;&gt;Anterior</a> --%&gt;
	&lt;%-- 		&lt;/c:if&gt; --%&gt;
&lt;/div&gt;

E no controller ficou simples pois uso Spring Data Jpa :

@Controller
@RequestMapping("/")
public class MediatorController {
	@Autowired
	private PostRepository postRepository;
	
	@RequestMapping(value = "/" , method = RequestMethod.GET)
	public String post(Model model) {
		//return posts(1, model);
		return "index/index";
	}	

	@RequestMapping(value = "pagina/{page}", method = RequestMethod.GET)
	public String posts(@PathVariable Integer page, Model model) {		
		Sort sort = new Sort(Direction.DESC, "id");		
		Pageable pageRequest = new PageRequest(page-1, 5 , sort);		
		Page&lt;Post&gt; posts = postRepository.findAll(pageRequest);			
		model.addAttribute("posts", posts.getContent());
		model.addAttribute("pagina", page);
		
		Integer proximo = 0;
		Integer anterior = 0;
		if (posts.hasNextPage()){
			proximo = page + 1;			
		}
		if (posts.hasPreviousPage()){
			anterior = page - 1;
		}
		model.addAttribute("proximo", proximo);
		model.addAttribute("anterior", anterior);

		return "index/posts";		
	}
}
  • Estou trabalhando nele ainda