Ninguna etiqueta "elegir" definida en la biblioteca de etiquetas importada con el prefijo "c"

Estoy usando las páginas del servidor Java por primera vez y tengo un problema con las etiquetas. También estoy trabajando en Eclipse, si eso es relevante.

El error específico que recibo es:

org.apache.jasper.JasperException: /Query.jsp (line: 5, column: 0) No tag "choose" defined in tag library imported with prefix "c"

El problema es que hay is una etiqueta "elegir" con un prefijo c...

Estaba teniendo problemas con las direcciones URL que generalmente se recomiendan, parece que algunas de ellas están desactualizadas, así que descargué las etiquetas estándar y las extraje en mi directorio WEB-INF/tags.

Mi archivo jsp comienza con:

<%@ page contentType="text/html" import="beans.*" %>
<%@ taglib prefix="c" tagdir="/WEB-INF/tags/c.tld" %>
<%@ taglib prefix="sql" tagdir="/WEB-INF/tags/sql.tld" %>
<%@ taglib prefix="fn" tagdir="/WEB-INF/tags/fn.tld" %>    
<c:choose>
....

c.tld tiene:

...
<tag>
    <description>
        Simple conditional tag that establishes a context for
        mutually exclusive conditional operations, marked by
        &lt;when&gt; and &lt;otherwise&gt;
    </description>
    <name>choose</name>
    <tag-class>org.apache.taglibs.standard.tag.common.core.ChooseTag</tag-class>
    <body-content>JSP</body-content>
</tag>

Supongo que hay algún tipo de error de configuración en alguna parte, pero no tengo ni idea de dónde podría estar.

preguntado el 03 de mayo de 12 a las 21:05

Por favor, coloque su mouse sobre el [jstl] etiqueta debajo de la pregunta hasta que aparezca un cuadro y luego haga clic en el info Enlace. -

1 Respuestas

Tus declaraciones de taglib son incorrectas. Reemplace esto:

<%@ taglib prefix="c" tagdir="/WEB-INF/tags/c.tld" %>

con este:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>

y asegúrate de que sea no (como dicen algunos tutoriales antiguos):

<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core"%>

... y repita para las otras bibliotecas. No necesita sus propias copias del .tld archivos, ya no son necesarios.

Estaba teniendo problemas con las URL que normalmente se recomiendan, parece que algunas están desactualizadas

No estoy seguro de dónde lo obtuviste, pero casi cualquier motor JSP/servlet funcionará con los URI que mencioné. Si esos URI no trabajo, luego publique una nueva pregunta a tal efecto. Descargando el tuyo tld archivos es casi seguro que no es el enfoque correcto.

contestado el 03 de mayo de 12 a las 23:05

Hice ese cambio y ahora estoy recibiendo org.apache.jasper.JasperException: The absolute uri: http://java.sun.com/jstl/core cannot be resolved in either web.xml or the jar files deployed with this application Creo que el bit 'no se puede resolver' fue la razón por la que pensé que estaban desactualizados. He encontrado algo sobre las versiones que podría ser la clave, ¡pero cualquier otro consejo es bienvenido! ¡Gracias! - munk

No cambie el URI de taglib del que skaffman incluyó en su respuesta. - BalusC

@usmcs: http://java.sun.com/jstl/core no es lo que dije; por favor lea la respuesta - skaffman

@skaffman ¡Vaya! Mi error. Arreglé la URL, pero sigo teniendo el mismo problema "no resuelto", pero creo que es una pregunta para otra publicación después de que lo analice un poco. ¡Gracias! - munk

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.