Grails: do Groovy à Web – Parte 5 - Java Magazine 79

Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Para efetuar o download você precisa estar logado. Clique aqui para efetuar o login
Confirmar voto
0
 (0)  (0)

Este artigo retrata a camada de visualização do Grails, cujo principal componente é a tecnologia GSP (Groovy Server Pages). Também nos aprofundaremos em assuntos como criação de bibliotecas de tags customizadas, templates, gerenciamento de layouts e Ajax.

Atenção: esse artigo tem um vídeo complementar. Clique e assista!

[links]Grails: do Groovy à Web – Parte 1
Grails: do Groovy à Web – Parte 2
Grails: do Groovy à Web – Parte 3
Grails: do Groovy à Web – Parte 4[/links] [rotulo-curso/]

[lead]De que se trata o artigo:

Este artigo retrata a camada de visualização do Grails, cujo principal componente é a tecnologia GSP (Groovy Server Pages). Também nos aprofundaremos em assuntos como criação de bibliotecas de tags customizadas, templates, gerenciamento de layouts e Ajax.

Para que serve:

A camada de visualização é vital em uma aplicação web por ser o elemento com o qual nossos usuários interagem diretamente. Sendo assim, é fundamental a compreensão deste componente do framework para que possamos criar interfaces gráficas de qualidade para nossos clientes.

Em que situação o tema é útil:

A camada de visualização é a responsável por interagir diretamente com nossos usuários. Ter domínio sobre ela é de grande importância para que possamos construir interfaces gráficas de qualidade.

Grails do Groovy à Web – Parte 5:

Neste artigo trataremos da camada de visualização do Grails, conheceremos a tecnologia GSP (Groovy Server Pages) e abordaremos os demais recursos oferecidos por esta camada: uso de templates, criação de tags customizadas, gerenciamento de layouts com SiteMesh e Ajax. [/lead]

Chegamos à última parte do minicurso sobre Grails. Após conhecermos o funcionamento dos controladores e do mecanismo de persistência (GORM), é hora de abordarmos a camada de visualização do framework, que é de vital importância, pois é a responsável pela construção da interface gráfica do nosso sistema.

Iniciaremos tratando do pilar da camada de visualização que é a tecnologia GSP. Os leitores que já desenvolveram aplicações web usando a plataforma Java EE sentirão certa familiaridade com esta tecnologia, o que é natural, visto que o GSP, por ser influenciado pelo JSP, acaba por se mostrar bastante semelhante. A diferença é que algumas das tarefas, como é normal em Grails, são bem mais fáceis de implementar, por exemplo, a criação de tags customizadas.

Finalizado este tema, trataremos de recursos que aumentam significativamente a produtividade do desenvolvedor: estamos falando da utilização de templates, criação de tags customizadas e o gerenciamento de layouts usando SiteMesh.

Outro tema que não poderia ficar de fora é o Ajax. Veremos como é fácil adotar esta técnica usando o framework sem que seja necessário escrever uma única linha Javascript para tratar das requisições ao servidor.

[subtitulo]Groovy Server Pages (GSP) [/subtitulo]

O principal componente por trás da camada de visualização do Grails é o Groovy Server Pages (GSP), que foi desenvolvido levando em consideração dois objetivos: ser familiar aos desenvolvedores acostumados com JSP ou ASP e, ao mesmo tempo, ser mais intuitivo e flexível que suas fontes de inspiração.

Por convenção, todos os arquivos GSP são armazenados no diretório grails-app/views da aplicação e possuem o sufixo .gsp.

Assim como uma página JSP, uma página GSP é uma mistura de três elementos:

• Linguagem de marcação (HTML);

• Tags customizadas;

• Lógica de negócio (scriptlets, desta vez escritos em Groovy ao invés de Java).

Apesar de permitir a inclusão de scriptlets em seu conteúdo, esta não é uma prática recomendada pelas seguintes razões:

• Os scripts acabam por acidentalmente incluir na camada de visualização elementos da lógica de negócio, quebrando assim o isolamento entre as camadas;

• A camada de visualização deve ser a mais próxima possível do web designer, que nem sempre entende de programação;

Scriptlets tornam mais difícil a manutenção das páginas, pois aumentam a sua complexidade e dificilmente favorecem o reaproveitamento de código;

• Na grande maioria das vezes um scriptlet pode ser substituído por uma tag customizada.

[nota]Scriptlets: Scriptlets são pequenos trechos de código inseridos na linguagem de marcação. É um recurso muito popular em PHP e ASP, tecnologias estas que exerceram forte influência na criação do JSP (e consequentemente GSP). Apesar de ser um recurso oficial, seu uso não é recomendado, pois pode acidentalmente mesclar elementos da camada de negócio com a de visualização. [/nota]

[subtitulo]Similaridades sintáticas entre GSP e JSP[/subtitulo]

Como mencionado, um dos objetivos do GSP é ser familiar a desenvolvedores acostumados a trabalhar com JSP. As similaridades expostas abaixo, no entanto, deverão ser vistas apenas como um pré-aquecimento ao nosso aprofundamento na tecnologia, pois esta apresenta alternativas bem mais interessantes.

[subtitulo]Scriptlets[/subtitulo]

A mesma sintaxe que estamos acostumados a usar em páginas JSP pode ser aplicada no GSP. A única diferença está na linguagem usada para escrever o código fonte, Groovy ao invés de Java.

Todo bloco de código deverá estar contido entre as sequências <% e %>, como no exemplo abaixo:

  <% var numero = 10 // definindo uma variável
 while (numero > 0) {  %>
 <p> ${numero--} </p>
 <% } %>

O código é bastante simples. Criamos uma variável chamada numero e a iniciamos com o valor 10. Em seguida definimos um loop cujo corpo é executado enquanto o valor desta variável for maior que 0. Repare que assim como no PHP e em páginas JSP, também é possível intercalar código e linguagem de marcação.

Outro ponto importante a ser observado é que, assim como no tratamento de strings do Groovy, podemos também usar a intercalação de valores, o que é justamente o que fazemos no interior do loop ao retornarmos o valor decrementado da variável numero: ${numero--}.

[subtitulo]Inclusão de resultado[/subtitulo]

É possível incluir no corpo HTML o resultado de uma função ou o valor de uma variável usando a diretiva <%= expressão|variável %>. No corpo da diretiva deverá estar contida uma variável ou expressão, cujo resultado será em seguida inserido no corpo da página, como no exemplo abaixo:

  Hoje é <%= new java.util.Date() %> 

Uma alternativa bem mais legível é utilizar a sintaxe ${expressão|variavel}, como no código:

  Hoje é ${new java.util.Date()}

[subtitulo]Comentários[/subtitulo]

A mesma sintaxe de comentários adotada pelo JSP aplica-se também a uma página GSP. Tudo o que estiver entre <%-- e --%> será considerado um comentário e, portanto ignorado pelo compilador, tal como no exemplo:

  Hoje é ${new java.util.Date()}
 <%-- Isto inicia um comentário. Tudo o que estiver neste bloco não será processado:
 <%= 1900 + 110 %> 2010 não será impresso. --%>

[subtitulo]Variáveis e escopos[/subtitulo]

Uma página GSP para ser útil deve poder expor o valor de algumas variáveis para o usuário do sistema. No caso do Grails, as variáveis são provenientes de dois tipos de fonte que descreveremos a seguir (modelo e escopos).

[subtitulo]Modelo[/subtitulo]

Modelo (model) é o conjunto de variáveis retornadas pelo controlador e diretamente acessadas pelas páginas relacionadas. Tal como vimos anteriormente, o modelo é um mapa do tipo chave-valor.

Para ilustrar o funcionamento do modelo, usaremos a action list definida no controlador PostController, apresentada na Listagem 1, e a sua visualização associada, o arquivo grails-app/view/post/list.gsp, exposto na Listagem 2"

A exibição deste artigo foi interrompida :(
Este post está disponível para assinantes MVP

 
Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Receba nossas novidades
Ficou com alguma dúvida?