Escribir un Tag

2095 vistas

Ejemplo simple, un tag vacÃo (sin contenido ni atributos) que muestra simplemente la cadena "Hello World":



java
  1. public class HelloTag extends TagSupport {
  2.  
  3.   public int doStartTag() throws JspException {
  4.       try {
  5.           pageContext.getOut().println ("Hello World !");
  6.       } catch (IOException e) {
  7.           throw new JspException ("I/O Error", e);
  8.       }
  9.       return Tag.SKIP_BODY;
  10.   }
  11. }



Explicación:

  • Extendemos TagSupport para veneficiarnos de las implementaciones por defecto de los métodos de Tag.
  • Sobrecargamos doStartTag(), en el que sólo escribimos la cadena "Hello World" en la salida de la página en curso (pageContext se inicializa por la implementación por defecto de setPageContext()).
  • Devolvemos Tag.SKIP_BODY porque no queremos tratar los cuerpos de la etiqueta.

Es inútil sobrecargar doEndTag() porque su implementación por defecto devuelve Tag.EVAL_PAGE.

El descriptor de fichero completo será algo asÃ:



xml
  1. <?xml version="1.0" encoding="ISO-8859-1" ?>
  2. <!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN" "http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd">
  3.  
  4. <taglib>
  5.   <tlibversion>1.0</tlibversion>
  6.   <jspversion>1.1</jspversion>
  7.   <shortname>tex</shortname>
  8.   <uri></uri>
  9.   <info>Taglib de ejemplo</info>
  10.  
  11.   <tag>
  12.     <name>hello</name>
  13.     <tagclass>HelloTag</tagclass>
  14.     <bodycontent>empty</bodycontent>
  15.   </tag>
  16. </taglib>



El hecho de especificar un bodycontent empty permite lanzar una excepción de compilación si el tag tiene algún tipo de contenido...

La página JSP puede parecerse a esto:



html4strict
  1. <%@ taglib uri="taglib-URI" prefix="p" %>
  2. <html>
  3. <body>
  4.   <b><p:hello/></b>
  5. </body>
  6. </html>



mostrará lo siguiente:



dos
  1. Hello World !