In JSP è necessario ridichiarare librerie di tag nei file inclusi?
Domanda
Im non realmente a conoscenza di come questo funziona in JSP
ma nel
template main.jsp c'è questo:
<%@ taglib uri="/WEB-INF/tld/c.tld" prefix="c" %>
<jsp:include page="/jsp/common_head.jsp"/>
poi nel common_head.jsp abbiamo questo nuovo:
<%@ taglib uri="/WEB-INF/tld/c.tld" prefix="c" %>
è necessario?
o in altre parole
dichiarazioni taglib propagate per includere i file?
Soluzione
Sì, questo è necessario. Prima eseguito per la prima volta, tutti i file JSP sarà individualmente convertito / tradotto / compilato a una classe Servlet
standalone. Tutti i tag saranno tradotti al "vero" codice Java / metodi. Se non si dichiara un taglib, poi il compilatore JSP non so cosa il codice Java / metodi che hanno bisogno di generare / chiamare per i tag particolari.
In caso di, ad esempio Tomcat, date un'occhiata nella cartella /work
per tutti quelli compilati JSP di. Visita il loro fonte e sarà tutto chiaro.
Altri suggerimenti
Il
<jsp:include page="/jsp/common_head.jsp"/>
... tag è una dinamica includono il che significa che richiama dinamicamente nella pagina common_head.jsp, che viene compilato in modo indipendente della pagina compresi. Così dovrebbe essere necessaria la direttiva taglib.
Se, d'altra parte si dovesse fare un statici includono utilizzando il includono di direttiva
<%@ include file="/jsp/common_head.jsp" %>
... il file sarebbe stato copia-incollato e e compilato con la pagina da cui è incluso. Quindi non dovrebbe essere necessario la direttiva taglib.
In ogni caso si consiglia di avere la taglib incluso solo per ottenere sostegno editore dei tag è possibile utilizzare durante lo sviluppo.
Si noti che i file statici sono incluse staticamente, anche con il jsp: include tag
direttiva include: http: //java.sun. com / prodotti / jsp / sintassi / 1.2 / syntaxref129.html # 997.991
jsp includono: http://java.sun.com/ prodotti / jsp / sintassi / 1.2 / syntaxref1214.html
Come si sta tra cui una risorsa dinamica, quella risorsa è "stand-alone", in modo da dovrebbe includere qualsiasi libreria di tag che si sta utilizzando. Altra questione è se si sta utilizzando questi tag ...
Sì, è richiesto per la compilazione JSP. È inoltre possibile utilizzare sotto taglib invece di c.tld.
<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c"%>
speranza che questo vi aiuterà
In altri sistemi di template definizioni di solito riportati. Non vedo il motivo per cui si dovrebbe avere per usare di nuovo