Foros del Web » Programación para mayores de 30 ;) » Java »

tag personalizada

Estas en el tema de tag personalizada en el foro de Java en Foros del Web. Hola a todos. Estoy creando mi primera taglib. Es muy sencilla, pinta la fecha extraída del sistema con el paquete calendar. El problema es que ...
  #1 (permalink)  
Antiguo 16/03/2006, 05:02
 
Fecha de Ingreso: marzo-2006
Mensajes: 5
Antigüedad: 18 años, 2 meses
Puntos: 0
tag personalizada

Hola a todos.

Estoy creando mi primera taglib. Es muy sencilla, pinta la fecha extraída
del sistema con el paquete calendar. El problema es que no "se entera" de
donde está el manejador de la etiqueta, es decir, la clase java que implementa el método doStartag.

Esta es la página de error:

mensaje

descripción El servidor encontró un error interno () que hizo que no pudiera rellenar este requerimiento.

excepción

org.apache.jasper.JasperException: No se puede compilar la clase para JSP

Ha tenido lugar un error en la línea: 69 en el archivo jsp: /index.jsp
Error de servlet generado:
FechaLarga cannot be resolved or is not a type


Ha tenido lugar un error en la línea: 69 en el archivo jsp: /index.jsp
Error de servlet generado:
FechaLarga cannot be resolved or is not a type

Ha tenido lugar un error en la línea: 69 en el archivo jsp: /index.jsp
Error de servlet generado:
FechaLarga cannot be resolved or is not a type


org.apache.jasper.compiler.DefaultErrorHandler.jav acError(DefaultErrorHandler.java:84)
org.apache.jasper.compiler.ErrorDispatcher.javacEr ror(ErrorDispatcher.java:328)
org.apache.jasper.compiler.JDTCompiler.generateCla ss(JDTCompiler.java:397)
org.apache.jasper.compiler.Compiler.compile(Compil er.java:288)
org.apache.jasper.compiler.Compiler.compile(Compil er.java:267)
org.apache.jasper.compiler.Compiler.compile(Compil er.java:255)
org.apache.jasper.JspCompilationContext.compile(Js pCompilationContext.java:556)
org.apache.jasper.servlet.JspServletWrapper.servic e(JspServletWrapper.java:293)
org.apache.jasper.servlet.JspServlet.serviceJspFil e(JspServlet.java:291)
org.apache.jasper.servlet.JspServlet.service(JspSe rvlet.java:241)
javax.servlet.http.HttpServlet.service(HttpServlet .java:802)


nota La traza completa de la causa de este error se encuentra en los archivos de diario de Apache Tomcat/5.5.9.


---------------------------------------------------------------------
-----------

Mi configuración es la siguiente:

WEB.xml
<taglib>
<taglib-uri>/tags/lutags</taglib-uri>
<taglib-location>/WEB-INF/tld/lutags.tld</taglib-location>
</taglib>

lutags.tld

<taglib>

<tlibversion>1.0</tlibversion>
<jspversion>1.2</jspversion>
<shortname>libreria</shortname>
<info>Ejemplo libreria lucas</info>

<tag>
<name>fecha</name>
<tagclass>FechaLarga</tagclass>
<bodycontent>empty</bodycontent>
<info>Pinta una fecha</info>
</tag>

</taglib>


JSP
<%@ taglib uri="/tags/lutags" prefix="lutag" %>

<lutag:fecha/>


La clase FechaLarga.class está en la carpeta class debajo de WEB-INF
aunque mi aplicación tiene una carpeta tags vacía y he probado a poner
ahí tambien el fuente .java

Se que el mapeo de la tag está bien porque al pinchar en la JSP los distintos
elementos está localizables, y he comprobado todos los nombres.

¿me podeis ayudar?

gracias mil
  #2 (permalink)  
Antiguo 16/03/2006, 05:07
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 7 meses
Puntos: 51
La clase FechaLarga.class está en la carpeta class debajo de WEB-INF

¿La carpeta class o la carpeta classes?
  #3 (permalink)  
Antiguo 16/03/2006, 05:11
 
Fecha de Ingreso: marzo-2006
Mensajes: 5
Antigüedad: 18 años, 2 meses
Puntos: 0
está en la carpeta classes, me equivoqué antes al escribirla.

Pues eso, que no se por qué no localiza el .class ahí ¿que puedo hacer?!!!

Gracias GreenEyed.

Última edición por lucashost; 16/03/2006 a las 05:22
  #4 (permalink)  
Antiguo 16/03/2006, 07:54
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 7 meses
Puntos: 51
Prueba a poner las clases del tag en un paquete, ya que lo de tener las clases en el paquete por defecto es algo que a veces da problemas raros, como este.
  #5 (permalink)  
Antiguo 17/03/2006, 02:05
 
Fecha de Ingreso: marzo-2006
Mensajes: 5
Antigüedad: 18 años, 2 meses
Puntos: 0
tampoco funciona

Hola GreenEyed.

He probado lo que me has dicho y no me da ya ningún error. Sin embargo, mi etiqueta no hace nada!!
Voy a tratar de ver lo que ocurre, si tengo algún problema, ya te lo digo.

Graciasm mil!

Última edición por lucashost; 17/03/2006 a las 02:37
  #6 (permalink)  
Antiguo 17/03/2006, 21:30
Avatar de stock  
Fecha de Ingreso: junio-2004
Ubicación: Monterrey NL
Mensajes: 2.390
Antigüedad: 20 años
Puntos: 53
no aparece nada? que extraño, estas mandando a imprimir?

si pusieras la clase que resuleve a tu etiqueta quiza te podamos ayduar mejor.
  #7 (permalink)  
Antiguo 20/03/2006, 02:49
 
Fecha de Ingreso: marzo-2006
Mensajes: 5
Antigüedad: 18 años, 2 meses
Puntos: 0
Esta es la clase. Como verás, una chorrada, pero la cuestión
es simplemente que la etiqueta imprima el resultado por pantalla:

import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.*;

import java.io.IOException;
import java.util.Calendar;
/*
* Created on 15-mar-2006
*
*/

public class FechaLarga extends TagSupport {


/**
*
* @param dia
* @return
*/
private String nombreDia(int dia) {
switch (dia) {
case 1: return("lunes");
case 2: return("martes");
case 3: return("miercoles");
case 4 : return("jueves");
case 5 : return("viernes");
case 6 : return("sabado");
case 7 : return("domingo");
default: return "";
}
}

/**
*
* @param mes
* @return
*/
private String nombreMes(int mes) {
switch (mes) {
case 1: return("enero");
case 2: return("febrero");
case 3: return("marzo");
case 4: return("abril");
case 5: return("mayo");
case 6: return("junio");
case 7: return("julio");
case 8: return("agosto");
case 9: return("septiembre");
case 10: return("octubre");
case 11: return("noviembre");
case 12: return("diciembre");
default: return "";

}
}

/**
* método doStarTag.
* @return
* @throws JspException
*/
public int doStarTag() throws JspException {

JspWriter out = pageContext.getOut();
System.out.println("dentro");

Calendar fecha = Calendar.getInstance();
int hora = fecha.get(Calendar.HOUR_OF_DAY);
int dia = fecha.get(Calendar.DAY_OF_WEEK);
dia = dia - 1;
String ndia = new String();
String nmes = new String();
int mes = fecha.get(Calendar.MONTH);
mes = mes + 1;

nmes = nombreMes(mes);
ndia = nombreDia(dia);


try {
if (hora == 0) hora = 24;
if (hora <= 14) {
out.println("Good Morning");
} else if (hora > 14 && hora < 21) {
out.println("Good Evening");
} else {
out.println("Good Night");
}
} catch (IOException ex){
throw new JspException(ex.getMessage());
}

// return SKIP_BODY;
return EVAL_PAGE;
} // FIN doStarTag
}


Gracias. Un saludo
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:05.