1. Introdução
Criar sua própria biblioteca de tags não é apenas uma questão de necessidade , esse item, bem elaborado, faz uma diferença e tanto na desenvolvimento da camada de visualização, pois deixam o código mais legível, organizam melhor as estruturas das páginas, abrem caminho para a reutilização de código através da componentização e proporcionam recursos indispensáveis na estrutura lógica e condicional de seu código html.
É pensando nisso que veremos, a seguir, como construir esse recurso essencial em uma aplicação web , além de mostrar como o Grails facilita a vida do desenvolvedor preservando-o dos detalhes de configuração, deixando focado apenas na funcionalidade da tag em questão.
2. O exemplo
Nosso exemplo será de uma tag que renderiza um input do tipo texto juntamente com a sua legenda. Trata-se de um exemplo bem simples mas que deixará o leitor apto a construir outras bibliotecas e tegs de sua preferência.
Então, mãos a obra! Primeiramente crie um novo projeto no Grails com o nome de TagLibProject e depois execute o seguinte comando no prompt do Grails para criar a biblioteca:
grails create-tag-lib com.mytags.Extra
Depois que você executar o comando o Grails automaticamente criará um classe ExtraTagLib no diretório taglib dentro do pacote com.mytags.
Pronto, nossa biblioteca de tags foi criada agora precisamos incluir a nossa tag labelField que será feito implementando um método com o mesmo nome da tag.
package com.mytags
class LabelFieldTagLib {
def labelField = { attr ->
out << "<div>${attr.label}</div>
<div>
<input type='text' value='${attr.value}'/>
</div>"
}
}
Observe que o argumento attr armazena os parâmetros da tag que no nosso caso será o label e o value.
Agora vamos testar a nosso exemplo. Para isso crie um controlador com o camando create-controller TesteTag, em seguida configure de acordo com o código a seguir:
class TesteTagController {
def index = {
return ['nome':'Raimundo Botelho']
}
}
Por convenção o Grails também criou uma página index.gsp no diretório view/testeTag que se relaciona com a ação index do controlador. Acrescente o seguinte código nessa página :
<html>
<head>
<title>Teste Tag</title>
</head>
<body>
<g:labelField label="Nome" value="${nome}" />
</body>
</html>
Pronto, agora é só testar nosso exemplo acessando o link http://localhost:8080/TagLibProject/testeTag/index
Figura 1. Testando exemplo.
3. Conclusão
Como podemos perceber no exemplo, o Grails simplifica muito a construção de bibliotecas de tags, tarefa essa que em outros ambientes são realizadas de forma muito complexa, pois a maioria do processo envolve configurações em arquivos descritores e a lógica de implementação é o mínimo que se faz. Com o Grails essas configurações ficam transparente para o desenvolvedor que se preocupa apenas com a lógica que envolve a funcionalidade da tag em questão.