Artigo no estilo: Curso

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.

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.

Groovy Server Pages (GSP)

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.

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.

Similaridades sintáticas entre GSP e JSP

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.

Scriptlets

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--}.

Inclusão de resultado

É 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()}

Comentários

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. --%>

Variáveis e escopos

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).

Modelo

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.

Listagem 1. Action list do controlador PostController.

 ... 

Quer ler esse conteúdo completo? Tenha acesso completo