2008-10-22 18 views
13

Me parece recordar la lectura que es posible declarar directivas taglib como:de declarar directivas taglib JSP en web.xml

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

en web.xml. Esto elimina la necesidad de duplicar esta directiva en cada archivo JSP donde se usa taglib. ¿Podría alguien decirme cómo estas directivas se pueden agregar a web.xml?

+1

Lástima, porque hay una solución para esto: preludios. Usando el elemento jsp-property-group de la sección jsp-config y su hijo include-prelude, puede designar un fragmento para ser incluido en cualquier JSP de acuerdo con su propia expresión regular. Puedes poner todas las directivas taglib que quieras allí. – nitind

+6

Esta pregunta definitivamente no debe cerrarse como fuera de tema. –

Respuesta

27

El elemento taglib en web.xml tiene un propósito diferente al de la directiva taglib que tiene arriba.

Como dijo David, se requiere la directiva taglib en cada página.

Si tiene muchas páginas que usan taglibs comunes, puede atajar esto colocando las directivas taglib en un archivo de inclusión e incluyendo este archivo en cada página. Pero no importa cómo lo haga, la directiva taglib tiene que estar en la página de alguna manera.

esa etiqueta que es necesario incluir en cada página tiene el siguiente aspecto:

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

Si usted tiene un taglib personalizado en una ubicación personalizada, también puede especificar una ubicación relativa a la raíz webapp:

<%@ taglib prefix="ex" uri="/taglib.tld" %> 

Further reading on the taglib directive

el taglib Directiva de la etiqueta de mapas web.xml URIs a la ubicación física de su taglib. Es opcional ya que JSP 2.0, como contenedores compatibles se verá en un conjunto de ubicaciones estándar para tratar de auto descubrir el taglib:/WEB-INF y sus subdirectorios,/META-INF y también para archivos JAR.

Parece que este, en web.xml:

<taglib> 
    <taglib-uri> 
    http://www.example.com/taglib 
    </taglib-uri> 
    <taglib-location> 
    /taglib.tld 
    </taglib-location> 
</taglib> 

Y el taglib se hace referencia en la página JSP como esto (la directiva taglib en cada página es inevitable!):

<%@ taglib prefix="ex" uri="http://www.example.com/taglib" %> 

Esto es equivalente al segundo ejemplo que di para la directiva taglib anterior. La mayor diferencia radica en cómo señala la ubicación de taglib.

This page contiene un poco más de información.

+0

Creo que no es el mejor ejemplo, todavía da el error java.lang. ClassNotFoundException: org.apache.taglibs.standard.tei.ImportTEI –

+1

Agradable explicación. Debería agregar aquí que puede agregar una etiqueta uri en el archivo de descripción de biblioteca de etiquetas (archivo tld) por ejemplo '/ELFunctionTagLibrary' y usar esta uri en sus páginas jsp. – skiabox

5

Lo sentimos, pero se equivoca un poco. Si una página usa un taglib, debe tener una directiva taglib para ella en la página. Puede colocar las directivas taglib comunes en un archivo include que todas sus páginas incluyan con una directiva include, pero en tiempo de compilación la directiva taglib debe estar allí.

Prefiero NO tener los elementos taglib en el archivo web.xml, y en su lugar hacer que la directiva taglib especifique el valor URI que se utiliza en el elemento "uri" en el TLD que se encuentra dentro del archivo jar taglib en su WEB -INF/lib.

+0

¿Cuál es el enfoque, si estoy utilizando fichas Apache. ¿Debo seguir lo mismo para incluir las directivas de taglib? Intenté definir directivas taglib en la plantilla base jsp. Pero no puedo obtener referencias de ellos en jsp's como header, footer y otros jsp que están configurados con la plantilla base jsp. – srinivas

+0

Obtuve una respuesta para mi enlace de pregunta anterior: http://stackoverflow.com/questions/8687873/spring-and-apache-tiles-with-shared-taglib – srinivas

Cuestiones relacionadas