Salve, estou a implementar paginação usando datatables.net com Vraptor.
Consegui listar os dados e buscar atráves de uma lista JSON, porém não compreendi como "passar" pro vraptor á pagina atual, para buscar os dados somente da página em exibição.
Ex: ele está buscando 1000 registros aonde na tela eu quero permitir apenas 10 em 10.
Abaixo os tópicos no qual me basei, caso alguém tiver alguma outra opção melhor é bem vinda :).
http://www.guj.com.br/java/289553-resolvido-vraptor-paginacao/
http://www.guj.com.br/java/207650-geracao-de-jsonarray-via-vraptor
//DataTables//
[code]public abstract class DataTables {
private List< List<String> >aaData;
private long iTotalRecords;
private long iTotalDisplayRecords;
private int minSearch;
@Override
public String toString() {
return "{'minSearch':" + minSearch + ", 'iTotalRecords':"
+ iTotalRecords + ", 'iTotalDisplayRecords':"
+ iTotalDisplayRecords + ", 'aaData':" + aaData.toString()
+ "}";
}
@Override
public boolean equals(Object obj) {
if (obj == null)
return false;
return this.hashCode() == obj.hashCode();
}
@Override
public int hashCode() {
return this.toString().hashCode();
} [/code]
//Controller//
[code]@Get("/jtable/paginar/")
public void paginate() {
List<Cliente> cls = clienteDao.findAll(); //clienteDao.findAll(start, lenght);
List<Object[]> listaTratada = new ArrayList<Object[]>();
for (Cliente cli : cls) {
String[] linha = { cli.getCodigo().toString(),
cli.getRazaoSocial(),
cli.getFantasia()
};
listaTratada.add(linha);
}
TableModel dataTable = new TableModel();
dataTable.setsEcho(new Long(new Date().getTime()).toString());
dataTable.setiTotalRecords((long) cls.size());
dataTable.setiTotalDisplayRecords(10);
dataTable.setAaData(listaTratada.toArray());
result.use(Results.json()).withoutRoot().from(dataTable).include("aaData").serialize();
}[/code]
//View//
[code]
script type=‘text/javascript’>
$(document).ready(function() {
oTable = $(’#cliente’).dataTable({ //configuração e inicialização do plugin datatables.net
"bAutoWidth":true,
"bLengthChange": false,
"bPaginate": true,
"bFilter": true,
"bSort": true,
"bInfo": true,
"bJQueryUI": false,
"sPaginationType": "full_numbers",
"iDisplayLength": 10,
"aLengthMenu": [[10, 100, -1], [10, 100, "All"]],
"bProcessing": false,
"bServerSide": true,
"sAjaxSource": '${pageContext.request.contextPath}/cliente/jtable/paginar/',
});
});
</script>[/code]