¿En JSP es necesario volver a declarar las bibliotecas de etiquetas en los archivos incluidos?

StackOverflow https://stackoverflow.com/questions/1683109

  •  18-09-2019
  •  | 
  •  

Pregunta

No estoy muy familiarizado con cómo funciona esto en JSP.

pero en el

plantilla main.jsp hay esta:

<%@ taglib uri="/WEB-INF/tld/c.tld" prefix="c" %>
<jsp:include page="/jsp/common_head.jsp"/>

luego en common_head.jsp tenemos esto nuevamente:

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

¿Es esto necesario?

o en otras palabras

¿Se propagan las declaraciones de taglib para incluir archivos?

¿Fue útil?

Solución

Sí, esto es necesario. Antes de ejecutar por primera vez, todos los archivos JSP de forma individual se convertirá / traducido / compilado a una clase Servlet independiente. Todas las etiquetas serán traducidos a "verdadero" código Java / métodos. Si no se declara una taglib, entonces el compilador JSP no sé qué código Java / métodos que necesita para generar / llamar para las etiquetas particulares.

En el caso de, por ejemplo, Tomcat, echar un vistazo en la carpeta /work para todos los compilados de JSP. Ver su fuente y todo estará claro.

Otros consejos

El

<jsp:include page="/jsp/common_head.jsp"/>

...La etiqueta es una inclusión dinámica, lo que significa que llama dinámicamente a la página common_head.jsp, que se compila independientemente de la página incluida.Por lo tanto, debería ser necesaria la directiva taglib.

Si, por otro lado, hicieras una inclusión estática usando el comando include directiva

<%@ include file="/jsp/common_head.jsp" %>

...el archivo habría sido copiar y pegar y compilado con la página desde la que se incluye.Entonces la directiva taglib no debería ser necesaria.

En cualquier caso, es posible que desee incluir taglib solo para obtener soporte del editor para las etiquetas que utiliza durante el desarrollo.

Tenga en cuenta que los archivos estáticos se incluyen estáticamente, incluso con la etiqueta jsp:include

incluir directiva: http://java.sun.com/products/jsp/syntax/1.2/syntaxref129.html#997991

jsp incluye: http://java.sun.com/products/jsp/syntax/1.2/syntaxref1214.html

Como usted está incluyendo un recurso dinámico, ese recurso es "independiente" por lo que debe incluir cualquier biblioteca de etiquetas que está utilizando. Otra cuestión es si está usando las etiquetas ...

Si se requiere para la compilación de JSP. También se puede utilizar a continuación taglib en lugar de c.tld.

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

Esperamos que esto ayude

En otros sistemas de plantilla las definiciones generalmente prorrogados. No veo por qué debería tener que usar de nuevo

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