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

Testando exemplo

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.