Reutilización de tag files.

Los tag files son fragmentos de jsp que encapsulan funcionalidad que puede ser reutilizada en varios jsp. Son una forma alternativa a implentar la funcionalidad en clases y están más orientados a la generación de código para la vista.

<%@tag description="Header tag" pageEncoding="UTF-8"%>
<%@attribute name="message"%>
<div id="header">
    <h1>${message}</h1>
</div>

Los tag files, al igual que los tag handlers, pueden ser empaquetados en archivos jar y ser reutilizados en más de una aplicación web.

En primer lugar, un tag file debe existir dentro del directorio META-INF/tags.

+ META-INF
    + tags
         - header.tag

En segundo lugar, se debe crear un archivo descriptor con la información de las etiquetas que contiene. Este archivo es un xml con la extensión .tld y debe encontrarse dentro del directorio META-INF (o en alguno de sus subdirectorios).

+ META-INF
    - example.tld

Contenido de example.tld:

<?xml version="1.0" encoding="UTF-8"?>
<taglib version="2.1" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee h ttp://java.sun.com/xml/ns/javaee/web-jsptaglibrary_2_1.xsd">
  <tlib-version>1.0</tlib-version>
  <short-name>example</short-name>
  <uri>http://www.javamexico.org</uri>
</taglib>

Para incorporar el tag file dentro de la libreria se debe agregar un elemento tag-file donde se especifica la ruta del archivo de la etiqueta (esta ruta debe iniciar con /META-INF/tags).

<?xml version="1.0" encoding="UTF-8"?>
<taglib version="2.1" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee h ttp://java.sun.com/xml/ns/javaee/web-jsptaglibrary_2_1.xsd">
  <tlib-version>1.0</tlib-version>
  <short-name>e</short-name>
  <uri>http://www.javamexico.org</uri>
  <tag-file>
      <name>header</name>
      <path>/META-INF/tags/header.tag</path>
  </tag-file>
</taglib>

Ahora, podemos proceder a generar el archivo jar y agregarlo a una aplicación web (el contenedor identifica automaticamente que el jar contiene una libreria de etiquetas). Para utilizarlo referenciamos mediante la URL a esta libreria dentro de una página JSP.

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@taglib prefix="jmx" uri="http://www.javamexico.org"%>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Ejemplo</title>
    </head>
    <body>
        <jmx:header message="Hola, mundo!"/>
    </body>
</html>