domingo, 1 de noviembre de 2009

Custom Tags en JSP

Antes de empezar a desarrollar nuestra primera tag miremos un segundo la estructura del proyecto en netbeans



Listo empecemos a crear nuestra primera Tag en Jsp.

Lo primero que vamos hacer es crear nuestro archivo descriptor TLD y ubicarlo en la carpeta WEB-INF ,en el ejemplo lo vamos llamar "mxdescriptor.tld", la funcion de este archivo es la de almacenar toda la informacion de las tags que vayamos creando con sus propiedades y opcionalmente informacion sobre las tag mismas , la estructura de este archivo es de la siguiente manera :



<?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>mxdescriptor</short-name>
<uri>/WEB-INF/mxdescriptor</uri>
<description>
Mis primeras etiquetas
</description>
<tag>
<name>welcomeTag</name>
<tag-class>mx.jsp.tags.HelloWorldTag</tag-class>
<bodycontent>empty</bodycontent>
</tag>
</taglib>


Ahora construyamos la funcionalidad de la Tag :




package mx.jsp.tags;

import java.io.IOException;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspTagException;
import javax.servlet.jsp.PageContext;
import javax.servlet.jsp.tagext.Tag;

public class HelloWorldTag implements Tag{
private PageContext pageContext;
private Tag parent;

public void setPageContext(PageContext pc) {
pageContext=pc;
}

public void setParent(Tag t) {
parent=t;
}

public Tag getParent() {
return parent;
}

public int doStartTag() throws JspException {
try{
pageContext.getOut().write("<b>Hola mundo</b>");
}catch(IOException e){
throw new JspTagException("An IOException occurred.");
}

return SKIP_BODY;

}

public int doEndTag() throws JspException {
return EVAL_PAGE;
}

public void release() {
pageContext=null;
parent=null;
}

}



Y en la vida real ¿Como se implementa la Tag?,echemos una mirada a la pagina index.jsp



<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@ taglib uri="/WEB-INF/mxdescriptor.tld" prefix="mx" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type"
content="text/html; charset=UTF-8">
<title>JSP Page</title>
</head>
<body>
<mx:welcomeTag />
</body>
</html>


listo hemos construido una tag basica, mas adelante le iremos colocando cosas mas complicadas

No hay comentarios: