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;
...Confira outros conteúdos:
Introdução ao JDBC
Novidades do Java
Teste unitário com JUnit
Black November
Desconto exclusivo para as primeiras 200 matrículas!
Pagamento anual
12x no cartão
De: R$ 69,00
Por: R$ 54,90
Total: R$ 658,80
Garanta o desconto
- Formação FullStack Completa
- Carreira Front-end I e II, Algoritmo e Javascript, Back-end e Mobile
- +10.000 exercícios gamificados
- +50 projetos reais
- Comunidade com + 200 mil alunos
- Estude pelo Aplicativo (Android e iOS)
- Suporte online
- 12 meses de acesso
Pagamento recorrente
Cobrado mensalmente no cartão
De: R$ 79,00
Por: R$ 54,90 /mês
Total: R$ 658,80
Garanta o desconto
- Formação FullStack Completa
- Carreira Front-end I e II, Algoritmo e Javascript, Back-end e Mobile
- +10.000 exercícios gamificados
- +50 projetos reais
- Comunidade com + 200 mil alunos
- Estude pelo Aplicativo (Android e iOS)
- Suporte online
- Fidelidade de 12 meses
- Não compromete o limite do seu cartão
<Perguntas frequentes>
Nossos casos de sucesso
Eu sabia pouquíssimas coisas de programação antes de começar a estudar com vocês, fui me especializando em várias áreas e ferramentas que tinham na plataforma, e com essa bagagem consegui um estágio logo no início do meu primeiro período na faculdade.
Estudo aqui na Dev desde o meio do ano passado!
Nesse período a Dev me ajudou a crescer muito aqui no trampo.
Fui o primeiro desenvolvedor contratado pela minha
empresa. Hoje eu lidero um time de desenvolvimento!
Minha meta é continuar estudando e praticando para ser um
Full-Stack Dev!
Economizei 3 meses para assinar a plataforma e sendo sincero valeu muito a pena, pois a plataforma é bem intuitiva e muuuuito didática a metodologia de ensino. Sinto que estou EVOLUINDO a cada dia. Muito obrigado!
Nossa! Plataforma maravilhosa. To amando o curso de desenvolvimento front-end, tinha coisas que eu ainda não tinha visto. A didática é do jeito que qualquer pessoa consegue aprender. Sério, to apaixonado, adorando demais.
Adquiri o curso de vocês e logo percebi que são os melhores do Brasil. É um passo a passo incrível. Só não aprende quem não quer. Foi o melhor investimento da minha vida!
Foi um dos melhores investimentos que já fiz na vida e tenho aprendido bastante com a plataforma. Vocês estão fazendo parte da minha jornada nesse mundo da programação, irei assinar meu contrato como programador graças a plataforma.
Wanderson Oliveira
Comprei a assinatura tem uma semana, aprendi mais do que 4 meses estudando outros cursos. Exercícios práticos que não tem como não aprender, estão de parabéns!
Obrigado DevMedia, nunca presenciei uma plataforma de ensino tão presente na vida acadêmica de seus alunos, parabéns!
Eduardo Dorneles
Aprendi React na plataforma da DevMedia há cerca de 1 ano e meio... Hoje estou há 1 ano empregado trabalhando 100% com React!
Adauto Junior
Já fiz alguns cursos na área e nenhum é tão bom quanto o de vocês. Estou aprendendo muito, muito obrigado por existirem. Estão de parabéns... Espero um dia conseguir um emprego na área.
Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.