|
Custom tag en 5 minutos
Pequeña Introducción
Un custom tag es la definición de un elemento del lenguaje JSP, con el objetivo de encapsular lógica o tareas.
Pueden consumirse de JSP directamente con los arhivos correspondientes o por medio de una librería de tag (tag library).
A los custom tag se le pueden pasar parámetros por medio de atributos en la invocación al elemento dentro de la página JSP.
Se pueden pasar variables de respuesta a la página JSP y se tiene acceso a todas las variables dentro de la página JSP.
Este tipo de alternativa para incluir contenido dinámico y llamdas a lógica tiene propiedades que mejoran la:
- separación de la lógica y presentación
- reusabilidad
- Encapsula la lógica de negocio
- Sintaxis para que los diseñadores Web incorporen facilmente
Ya existen un conjunto de custom tag definidos por organizaciones o particulares y otro estándar para poder utilizar. Entre estos destacamos:
Componentes
Los componentes que componen un custom tag son:
- Tag Handler class - Clase java que define la acción del tag
- Tag library descriptor (TLD) - Mapea los elementos XML a manejadores de clase
- JSP - utiliza el custom tag
Pasos para la creación y consumo de un custom tag
1 - Creación del handler
Tenemos 4 opciones, implementar dos interfaces o extender de dos clases. Aquí presentaremos un caso práctico común sin detallar la elección.
La opción elegida será la de extender de una clase TagSupport .
Ejemplo (escribe en el JSP un texto):
import java.io.IOException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.TagSupport;
import org.apache.jasper.tagplugins.jstl.core.Out;
public class ExampleTag extends TagSupport {
public int doStartTag() {
try {
JspWriter out = pageContext.getOut();
out.print("ejemplo de custom tag");
} catch(IOException ioe) {
System.out.println("Error en ExampleTag: " + ioe);
}
return(SKIP_BODY);
}
}
2- Tag Library Descriptor (TLD)
Este archivo describe toda la información necesaria para que el contenedor asocie a un tag concreto un handler que lo maneja.
Es un archivo XML que describe: Nombre del tag, Contenido del body, Atributos y Clase handler del tag.
La
Ubicación debe estar bajo el archiov WEB-INF
Ejemplo:
<?xml version="1.0" encoding="UTF-8"?>
<taglib version="2.0" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee web-jsptaglibrary_2_0.xsd">
<tlib-version>1.0</tlib-version>
<short-name>mensaje-tag</short-name>
<uri>/WEB-INF/tlds/mensaje-tag</uri>
<tag>
<name>example</name>
<tagclass>com.tags.ExampleTag</tagclass>
<bodycontent>empty</bodycontent>
<info>agrega una linea en la salida</info>
</tag>
</taglib>
3 - Consumir al custom tag del JSP
Declaro la librería tag por medio de la directiva “taglib”
Sintaxis:
<%@ taglib prefix="myprefix" uri=”myuri” %>
prefix: identifica la librería
uri: identifica la ubicación del tld
Consumir el custom tag con la sintaxis:
<prefix:tag attr1="value" ... attrN="value" />
Ejemplo:
<%@page contentType="text/html"%>
<%@page pageEncoding="UTF-8"%>
<%@ taglib prefix="msj" uri="/WEB-INF/tlds/mensaje-tag.tld" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
</head>
<body>
<h1><msj:example/></h1>
</body>
</html>
Espero que haya quedado clara este primer ejemplo de Custom tag. Si tienen dudas, consulten vía mail:
Esta dirección de correo electrónico está protegida contra los robots de spam, necesita tener Javascript activado para poder verla
Nada mas por ahora ...
Martin
|