JavaDabbaDoo.org -Tu comunidad Java parlante Custom Tags
Inicio | Cursos infosintesis.net liberados | Java EE | Creación tradicional de Etiquetas Personalizadas
Creación tradicional de Etiquetas Personalizadas
Paso 3: Operativa

Crear la etiqueta <libreria1:turnoManyana> y su Tag Handler TurnoManyana

Para realizar este cometido tenemos que seguir los siguientes pasos:

Nos situamos en la ventana Projects y con el botón derecho del ratón seleccionamos el proyecto protaghandler. Entonces elegimos new | Other...

En el cuadro de diálogo New Tag Handler introducimos el nombre de la Clase manejadora TurnoManyana en el campo de texto Class Name:

Debido a que queremos que el nuevo Manejador de Etiquetas herede de la Clase javax.servlet.jsp.tagext.BodyTagSupport seleccionamos el radioboton BodyTagSupport. Seguidamente hacemos clic sobre el botón Next

NetBeans 6 - Nuevo Manejador de Etiquetas que hereda de BodyTagSupport - New Tag Handler | Class Name: TurnoManyana | BodyTagSupport

en el cuadro de diálogo New File vamos a darle nombre a nuestra etiqueta personalizada y la vamos a incluir en el Descriptor de la Librería de Etiquetas.

para ello mantenemos seleccionado el checkbox Add Corresponding Tag to the Tag Library Descriptor

hacemos clic sobre el botón Browse... y navegamos hasta encontrar el Descriptor de la Librería de Etiquetas libreria1.tld

en el campo de texto Tag Name: introducimos el nombre de la etiqueta turnoManyana

también seleccionamos el radiobotón tagdependent

Seguidamente hacemos clic sobre el botón Finish

NetBeans 6 - Nuevo Manejador de Etiquetas que hereda de BodyTagSupport - New File | Tag Name: turnoManyana | tagdependent

El asistente ha ampliado el fichero libreria1.tld añadiendo un subelemento llamado <tag> al elemento raíz.

<?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>libreria1</short-name>
 <uri>/WEB-INF/tlds/libreria1</uri>
 
<tag>
  <name>
fechaActual</name>
  <tag-class
>paqtagext.FechaActual</tag-class>
  <body-content>
empty</body-content>
 </tag>

 <tag>
  <name>turno1</name>
  <tag-class>paqtagext.Turno1</tag-class>
  <body-content>tagdependent</body-content>
 </tag>
 <tag>
  <name>fechaActual2</name>
  <tag-class>paqtaghandler.FechaActual2</tag-class>
  <body-content>empty</body-content>
  <attribute>
   <name>signoSeparador</name>
   <required>true</required>
   <rtexprvalue>true</rtexprvalue>
   <type>java.lang.String</type>
  </attribute>
 </tag>
 
<tag>
  
<name>turnoManyana</name>
  
<tag-class>paqtaghandler.TurnoManyana</tag-class>
  
<body-content>tagdependent</body-content>
 
</tag>
</taglib>

Este es el esqueleto del Manejador de Etiquetas TurnoManyana

package paqtagext;

import java.io.IOException;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.BodyContent;
import javax.servlet.jsp.tagext.BodyTagSupport;

public class TurnoManyana extends BodyTagSupport {

 public TurnoManyana() {
  super();
 }

 private void otherDoStartTagOperations() {}

 private void otherDoEndTagOperations() {}

 private void writeTagBodyContent(JspWriter out, BodyContent bodyContent)
                                                          throws IOException {

  bodyContent.writeOut(out);

  bodyContent.clearBody();
 }

 public int doStartTag() throws JspException, JspException {
  otherDoStartTagOperations();

  if (theBodyShouldBeEvaluated()) {
   return EVAL_BODY_BUFFERED;
  } else {
   return SKIP_BODY;
  }
 }

 public int
doEndTag() throws JspException, JspException {
  otherDoEndTagOperations();

  if (shouldEvaluateRestOfPageAfterEndTag()) {
   return EVAL_PAGE;
  } else {
   return SKIP_PAGE;
  }
 }

 public int doAfterBody() throws JspException {
  try {
   BodyContent bodyContent = getBodyContent();
   JspWriter out = bodyContent.getEnclosingWriter();

   writeTagBodyContent(out, bodyContent);
  } catch (Exception ex) {
   handleBodyContentException(ex);
  }

  if (theBodyShouldBeEvaluatedAgain()) {
   return EVAL_BODY_AGAIN;
  } else {
   return SKIP_BODY;
  }
 }

 private void handleBodyContentException(Exception ex) throws JspException {
  throw new JspException("error in NewTag: " + ex);
 }

 private boolean shouldEvaluateRestOfPageAfterEndTag() {
  return true;
 }

 private boolean theBodyShouldBeEvaluatedAgain() {
  return false;
 }

 private boolean theBodyShouldBeEvaluated() {
  return true;
 }
}

Página anterior
Ignasi Pérez Valls
fundador-director Infosintesis Solutions Group
asesor-formador independiente
ignasiperez[ARROBA]javadabbadoo[PUNTO]org
Junio 2009
JavaDabbaDoo.org
Tu comunidad Java parlante. Cursos abiertos, tutoriales y mucho mucho más ...