Une librairie de tag GSP est tout simplement une classe Groovy dont le nom se termine par TagLib, et dont le fichier est placé dans le répertoire grails-app/taglib.
Grails fournit la cible Ant create-taglib pour créer une nouvelle librairie de tag, et il suffit d'indiquer le nom de celle-ci. Si vous saisissez format comme nom de librairie par exemple, le fichier FormatTagLib.groovy contenant la classe FormatTagLib sera créé dans le répertoire taglib.
Pour définir un tag dans la librairie, il suffit de déclarer une propriété de la classe de type closure prenant deux arguments : le premier de type java.util.Map représentant les attributs du tag, et le second (optionnel) une closure correspondant au corps du tag.
Voici ce que l'on pourrait trouver dans le fichier FormatTagLib.groovy par exemple :
def repeat = { attrs, body ->
attrs.times?.toInteger().times { n -> body(n) }
}
def dateFormat = { attrs ->
out << new java.text.SimpleDateFormat(attrs.format).format(attrs.date)
}
}
Cette librairie de tag définit les tag repeat et dateFormat.
Le premier tag permet de répéter son contenu le nombre de fois indiquer par son attribut times. Par exemple :
Le second tag, dateFormat, permet d'afficher dans la page la date passée dans l'attribut date, en utilisant le format de date indiqué dans l'attribut format, comme dans :