Criando uma Tag Personalizada Simples em JSP

Implemantação da Classe de Tag

Para desenvolver uma tag personalizada em JSP, crie uma classe Java que estenda SimpleTagSupport e sobrescreva o método doTag(). Este método controla o que a tag irá gerar na página.

package com.exemplo;

import java.io.IOException;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.SimpleTagSupport;

public class TagMensagem extends SimpleTagSupport {

    @Override
    public void doTag() throws JspException, IOException {
        getJspContext().getOut().write("Bem-vindo ao sistema!");
    }
}

Criação do Arquivo TLD

Defina um arquivo de descrição de biblioteca de tags (TLD) em um local como /WEB-INF/ ou um subdiretório. Este arquivo mapeia a tag para sua classe de implementação.

<?xml version="1.0" encoding="UTF-8" ?>
<taglib 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 http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
    version="2.0">

  <tlib-version>1.0</tlib-version>
  <short-name>exemplos</short-name>
  <uri>/bibliotecamensagem</uri>
  <tag>
    <name>msg</name>
    <tag-class>com.exemplo.TagMensagem</tag-class>
    <body-content>empty</body-content>
  </tag>
</taglib>

O atributo uri identifica de forma exclusiva a biblioteca, enquanto short-name é usado como prefixo nas páginas JSP. O elemento name define o nome da tag, e tag-class aponta para a classe Java correspondente.

Utilização na Página JSP

Declare a biblioteca de tags com a diretiva taglib e invoque a tag usendo o prefixo e o nome definidos.

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib uri="/bibliotecamensagem" prefix="app"%>

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Exemplo de Tag Personalizada</title>
</head>
<body>
    <app:msg/>
</body>
</html>

Configuração no web.xml (Se Necessário)

Se o arquivo TLD não estiver no classpath padrão, como em /WEB-INF/tags/, adicione um mapeamento no web.xml para associar a URI à localização do arquivo.

<jsp-config>
    <taglib>
        <taglib-uri>/bibliotecamensagem</taglib-uri>
        <taglib-location>/WEB-INF/tags/mensagem.tld</taglib-location>
    </tag>
</jsp-config>

Ao executar a aplicação, a tag <app:msg/> será processada pelo contêiner JSP, que chamará o método doTag() da classe TagMensagem para gerar a saída na página.

Tags: JSP Custom Tags Java Servlet API TLD Tag Library Descriptor

Publicado em 6-17 23:01