Boa tarde, pessoal.
Estou tentando desenvolver um paginador no mesmo estilo do Twitter para minha aplicação, exibindo os 100 primeiros resultados por vez.
Pesquisei no forum, em sites e não encontrei nenhuma solução que fizesse da forma que preciso.
Então tentei realizar da seguinte forma:
Os parametros que utilizarei para paginar são limit + offset (no banco de dados).
No meu Controller, criei o seguinte método
public List<Pessoa> nome(String nome, Integer cidade, Integer offset) { // este offset SEMPRE será zero, pois se trata do método da primeira busca
result.include("nome", nome);
result.include("cidade", cidade);
return pessoaRepository.buscaNome(nome, cidade, offset);
}
Ou seja, simplesmente entrego para o repository os parametros de nome, cidade e o offset 0. E ele me retorna a lista perfeitamente.
Pensei em incluir os parametros que utilizei anteriormente na página onde seriam exibidos os resultados, pois daí poderia utilizar um form escondido com inputs do tipo “hidden” com os valores que eu preciso para fazer a nova busca, claro que caso se o tamanho da lista mostrada fosse igual a 100. Ou seja, teria de ter um formulario mais ou menos assim:
<form method="post" action="/mais">
<input type="hidden" name="nome" value="${ cidade }" />
<input type="hidden" name="cidade" value="${ cidade }" />
<input type="hidden" name="offset" value="100" />
<button type="submit">Mais resultados</button>
</form>
inicialmente, o valor do offset seria 100. Javascript poderia cuidar de incrementar esse valor no futuro.
E no meu Controller, seria mais ou menos assim:
@Post @Path("/mais")
public void maisResultados(String uf, String nome, Integer cidade, Integer offset){
List<Pessoa> pessoaList = pessoaRepository.buscaNome(nome, cidade, offset);
result.use(Results.json()).from(pessoaList).serialize(); //é assim que se envia para a página a lista?
}
Então vamos para as minhas dúvidas:
A solução que eu utilizei está correta? ela tem brechas para injeção de sql ou algo do tipo?
Como eu faria para aplicar estes resultados na minha página? eu pesquisei e só encontrei soluções em php. Alguém já viu alguma solução dessas para java?
A única que entendi mais ou menos foi essa:
Agora não estou conseguindo adaptá-la para o meu código. Como faria para esse $.ajax({}); jogar as informações na div #conteudo e incrementar o valor do campo offset no formulário do botão “mais”?
Muito obrigado pessoal