DataTables server-side com Java

Mais uma vez eu postando sobre o famoso plug-in DataTables para o jQuery, mas agora suportando sua última versão (pelo menos até o presente momento). Teve mudanças significativas e todas podem ser consultadas aqui.

Não vou detalhar muito sobre como eu implementei pois eu já fiz uma postagem sobre o tema, contudo existem algumas coisas que preciso destacar.

No exemplo que consta neste repositório, temos apenas duas classes abstratas para trabalhar, a CommonController e a DataTables, mas agora, além delas, temos as classes:
  • DtColumn: Representa uma coluna mostrada em tela pelo DataTables.
  • DtOrder: A coluna usada para ordenação.
  • DtSearch:  Cada DtColumn tem um atributo DtSearch que é usado para refinar os dados da tabela. Também existe um geral que serve para a tabela inteira.
  • DtConsolidated: Realiza a consolidação das classes acima além de ter os atributos draw, start e length, ou seja, ela contém tudo o que o DataTables requisitou.
Isso é tudo para facilitar o trabalho com o plug-in! As classes abstratas também foram alteradas para ficar mais simples também. Executando o projeto de teste e realizando o login (veja os acessos no users.xls), podemos ver de bate-pronto no trace a seguinte saída:


Reparem nas informações contidas na instância do DtConsolidated.
  1. O Draw está com o valor 1 pois a tabela foi desenhada apenas uma vez, se ordenarmos a tabela ou colocarmos algo no campo de busca, o valor será atualizado para 2, ou seja, representa o número de vezes que a tabela foi atualizada.
  2. O valor Start está como 0 e o Length como 10, isso representa que a resposta deve retornar os primeiros 10 registros disponíveis. Se atualizarmos o combox entries que está com o valor 10 para 25, o valor Length será atualizado. Se mudarmos a páginação de 1 para 2 (no printscreen tem 4 disponíveis), o Start será atualizado em função do Length.
  3. Percebam que existem 4 colunas, cada uma com o seu DtSearch, e a primeira está como orderable false, deixei assim pois é só para ações de edição e exclusão (veja no arquivo scripts.js), portanto não é necessário deixá-lo como verdadeiro. A ideia para cada coluna ter o seu DtSearch é para o caso de múltiplos filtros (mais detalhes aqui), entretanto no laboratório usei apenas o DtSearch de âmbito geral e no server-side programei apenas para a coluna Name. Se digitarmos "Marty" no campo de busca o DtSearch de uso geral terá o valor search=DtSearch [value=Marty, regex=false].
  4. Por fim temos o DtOrder que ordena a coluna de índice 1 de forma ascendente por padrão. Se clicarmos na coluna Email duas vezes teremos o valor DtOrder [column=2, dir=desc].
Acredito que as informações principais sejam essas. 

Além desse exemplo com o DataTables, inclui outras coisas que servem de estudo para quem queira aprender sobre o VRaptor 4 e alguns do seus plug-ins (Brutauth, I18N e Hibernate) como o padrão repository, CSS, jQuery e alguns de seus plug-ins (Validation Engine, Tooltipster, TableTools e jQuery UI), HTML, lógica para distribuir fragmentos do JSP (usei a ideia do projeto Mamute), internacionalização completa, lombok e como usar a biblioteca Apache POI. Na source folder src/main/resources temos o arquivo users.xls que tem todos os usuários criados em tempo de execução no banco de dados HSQLDB. Logo na inicialização do laboratório a classe DataBaseInitializer faz uso da biblioteca de leitura de planilhas para criar os usuários. Enfim, É um laboratório honesto bem completo! Ele está disponível no link abaixo:
Apesar de ser algo intermediário ou até avançado, como o projeto já está funcional, basta realizar muitos testes, trocar configurações e debugar que uma hora o touro será dominado!

Soluções usadas:
  • apache-maven-3.2.3
  • apache-tomcat-8.0.20
  • jdk1.8.0_25
  • lombok-1.16.2
  • Eclipse Luna SR2
Ao som de Barracuda, Heart.

Comentários

  1. show, parabéns e obrigado por compartilhar!

    ResponderExcluir
  2. Olá Willian, só não entendi a parte da criação dos links de editar e excluir, tem como dar uma força?

    ResponderExcluir
    Respostas
    1. Em qual ponto você não entendeu? Veja que o link abaixo contém a função responsável por inserir os links de editar e excluir. Tente debugar no Chrome via Developer Tools para compreender o funcionamento.

      https://github.com/willianantunes/labs-datatables-vraptor/blob/master/src/main/webapp/js/scripts.js#L132-L133

      Aqlbras!

      Excluir
  3. Parabéns pelo trabalho! gostaria de uma ajuda para adaptar o uso de filtros extras por coluna, pode me ajudar?

    ResponderExcluir
    Respostas
    1. Obrigado, Ribeiro! Bom, como você pode ter visto, o laboratório só suporta filtro para uma coluna em específico. Sugiro investigar o exemplo disponível no site do desenvolver para auxiliá-lo na implementação:

      https://datatables.net/examples/api/multi_filter.html

      Excluir
  4. Mais uma vez, PARABÉNS! Ajuda muito a comunidade Vraptor.

    ResponderExcluir

Postar um comentário