Pregunta

Comienzo con JSP y servlets desarrollo, tengo algunos problemas con una etiqueta personalizada sin cuerpo para ser insertados en una página JSP.

Pasos hecho:

  1. Escrito y compilado correctamente un (TagSupport extiende) CustomTag.java en el directorio WEB-INF/classes;
  2. Definido el archivo TLD, con un ejemplo muy sencillo, incluyendo <body-content> con un valor empty para una etiqueta sin cuerpo;
  3. Se utiliza la etiqueta en una página JSP con la directiva taglib apuntando a mi archivo /WEB-INF/tlds/site.tld.

Con todo esto en mente, ¿tiene idea de por qué Tomcat es el envío de un error como este:

  

customtag no se puede resolver a un tipo

Gracias de antemano por sus respuestas, y por favor, pregunte si necesita más detalles.


Aquí está mi archivo TLD:

<?xml version="1.0" encoding="ISO-8859-1"?>

< ! DOCTYPE taglib 
    PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN" 
    "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">

<taglib>
    <tlib-version>1.0</tlib-version>
    <jsp-version>1.2</jsp-version>
    <short-name>customlib</short-name>
    <description>Custom library.</description>
    <tag>
      <name>header</name>
      <tag-class>HeaderTag</tag-class>
      <body-content>empty</body-content>
      <description>...</description>
    </tag>
</taglib>

El archivo JSP:

<%@ page contentType="text/html; charset=UTF-8" language="java" import="java.sql.*" errorPage="" %>
<%@ taglib uri="/WEB-INF/tlds/customlib.tld" prefix="clib" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org    /TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>title</title>
</head>

<body>
    <clib:header />
</body>
</html>

La clase HeaderTag:

import javax.servlet.jsp.JspTagException;
import javax.servlet.jsp.tagext.TagSupport;
import java.io.IOException;

public class HeaderTag extends TagSupport {

    public int doEndTag() throws JspTagException {
        try {
            pageContext.getOut().print("<p>header</p>");
        }
        catch (IOException e) {
            throw new JspTagException("Error.");
        }
        return EVAL_PAGE;
    }
}
¿Fue útil?

Solución

Usted ha reconstruido y vuelve a desplegar, correcto? En ese caso, mi mejor conjetura es que lo dejó fuera de la directiva en el archivo TLD.

<tag>
    <name>cookieIterator</name>
    <tag-class>util.infoTemplates.CookieIterator</tag-class>
    <body-content>JSP</body-content>
</tag>

Si eso no es la causa, por favor enviar su archivo de dominio de nivel superior y un ejemplo de JSP.


Editar: Todas las clases de etiquetas deben tener un paquete. Por la especificación JSP 2.0 (sección JSP 11.2):

  

A partir de JSP 2.0, es ilegal para referirse a las clases de la sin nombre (también conocido como   ) Paquete por defecto.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top