Artigo no estilo: Curso

De que se trata o artigo:

No quarto e último artigo da série, daremos sequência ao estudo sobre o VRaptor 3 durante o desenvolvimento de uma aplicação web. Veremos como apresentar uma listagem de dados de forma dinâmica e estruturada junto a uma paginação via Ajax. Também veremos como mudar o idioma do sistema e como validar os dados das entidades antes de salvá-las.

Em que situação o tema útil:

Este tema é útil a todo desenvolvedor interessado em ter mais uma excelente opção Java para desenvolvimento web em sua caixa de ferramentas.

Resumo DevMan:

Neste artigo vamos aprender como desenvolver uma listagem de dados com as opções de consulta e paginação Ajax. Também será mostrado como traduzir o sistema para outro idioma e como usar os validadores de dados do VRaptor.

Na terceira parte deste artigo vimos como deixar uma aplicação mais segura fazendo o controle de acesso e de permissão ao sistema. Além disso, também aprendemos como manipular arquivos criando a funcionalidade de enviar imagens para o sistema, bem como apresentá-las.

Agora, vamos focar nosso estudo na integridade dos dados, ou seja, nos preocupar com o conteúdo dos dados inseridos no sistema, garantindo sempre dados íntegros. Não podemos esperar que os usuários sempre digitem os dados da forma correta, por isso, se faz necessário a validação destas entradas. Validações estas que o VRaptor automatiza, facilitando o desenvolvimento de sua aplicação.

Voltando nossa preocupação para a apresentação dos dados, principalmente em grande quantidade, é comum planejarmos uma forma simplificada de visualizar e procurar os itens disponíveis em uma listagem. Para possibilitar a implementação de tais requisitos, hoje em dia encontramos diversas soluções visuais, no entanto, uma delas está em maior destaque entre as aplicações web: os plugins jQuery. Estes, em sua maioria, trabalham com um formato de dados bem flexível, chamado JSON. Vamos então estudar um pouco sobre ele.

Conhecendo o JSON

O JSON é um formato de dados que possibilita a manipulação de objetos Java em JavaScript de uma forma muito fácil e intuitiva. A maioria dos serviços disponibilizados na internet suporta este formato de dados e a cada dia temos mais ferramentas que trabalham diretamente com ele. O formato de seu conteúdo é bem simples. Ele fica envolvido por chaves, onde os dados são separados na estrutura chave:valor, como mostrado no exemplo a seguir:


  { "chave": "valor" } 

O valor pode ser de diversos tipos, como texto, número, e até objeto, que é representado por outro bloco delimitado por chaves.

Quando houver mais de um elemento, estes devem estar separados por vírgula, conforme o exemplo:


  {
    "nome": "Washington Botelho",
    "artigo": { "nome": "Vraptor 3", "parte": 4 }
  } 

No trecho acima temos dois elementos. O primeiro possui um valor texto e o segundo um objeto, que, por sua vez, possui dois outros elementos: um com o valor do tipo texto e outro do tipo número.

Além disso, o JSON também suporta listas de itens. Elas são reconhecidas por manter seu conteúdo envolvido por colchetes, como pode ser visto abaixo:


  {
    "nome": "Washington Botelho",
    "artigo": { "nome": "Vraptor 3", "parte": 4 },
    "topicoList": [
      { "nome": "json" },
      { "nome": " xstream" }
    ]
  } 

Observe que neste código há valores do tipo String e do tipo objeto, assim como há a representação de uma lista de objetos. A princípio, podemos identificar um objeto por ter seus valores envolvidos por chaves, e uma lista por estar envolvida por colchetes.

Conhecendo o XStream

Apesar de o formato JSON ser bem fácil de entender, com o passar do tempo e com o aumento da quantidade de dados, fica um tanto quanto trabalhoso lê-lo, assim como manter sua estrutura. Por isso, existem diversas bibliotecas preparadas para trabalhar com este formato, sabendo transformar um objeto Java em JSON e JSON em objeto JavaScript. O VRaptor usufrui desta funcionalidade utilizando o framework XStream, tornando esta tarefa bem simples e dinâmica.

Assim, para iniciar a ação de serialização de um determinado objeto como, por exemplo, uma lista de filmes, podemos utilizar o objeto result do pacote do VRaptor, como mostrado a seguir:


  result.use(Results.json());

Este objeto possui o método use() que recebe o tipo de dados esperado como resultado. No nosso caso, foi escolhido o formato JSON (Results.json()), pois queremos serializar a listagem de filme neste formato. Após a escolha do resultado é possível utilizar o encadeamento de métodos (Method Chaining) para passar o objeto a ser serializado e as configurações do resultado. Veja um exemplo:


  result.use(json()).withoutRoot().from(entityList)
  .include("objeto")
    .exclude("objeto.nome")
  .serialize();

Note que neste código temos diversas instruções formadas pelo encadeamento de métodos. Cada um deles executa uma ação sobre o item a ser serializado.

A seguir é explicado o funcionamento de cada um destes métodos:

• from(): indica o item a ser serializado;

• include(): indica qual atributo do objeto incluir na serialização;

• exclude(): indica qual atributo do objeto excluir da serialização;

• serialize(): é o método que inicia a serialização;

...

Quer ler esse conteúdo completo? Tenha acesso completo