Java and the Duke logo are trademarks of Sun Microsystems, Inc.
Custom tag en 5 minutos PDF Imprimir E-Mail
Escrito por Martin Cabrera   
jueves, 01 de marzo de 2007

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

Comentarios
Ańadir nuevoBuscarRSS
ˇSólo los usuarios registrados pueden escribir comentarios!
Modificado el ( jueves, 01 de marzo de 2007 )
 
< Anterior   Siguiente >

Ingresar






¿Recuperar clave?
¿Quiere registrarse? Regístrese aquí

Usuarios conectados

Hay 2 invitados en línea

Cuestionario

¿Que tema elegirías para tratar en el próximo evento del jug?
 

Syndicate

joomla templates by dezinedepot
© 2008 Juguy - Grupo de Usuarios Java del Uruguay
Joomla! es Software Libre distribuido bajo licencia GNU/GPL.