Dans JSP est-il nécessaire de redéclarer bibliothèques de balises dans les fichiers inclus?
Question
Je ne suis pas vraiment au courant de la façon dont cela fonctionne dans JSP
mais dans le
modèle main.jsp il c'est:
<%@ taglib uri="/WEB-INF/tld/c.tld" prefix="c" %>
<jsp:include page="/jsp/common_head.jsp"/>
puis à common_head.jsp nous avons cette fois:
<%@ taglib uri="/WEB-INF/tld/c.tld" prefix="c" %>
est-ce nécessaire?
ou autrement dit
sont des déclarations taglib propagées pour inclure des fichiers?
La solution
Oui, cela est nécessaire. Avant exécuté pour la première fois, chaque fichier JSP individuellement converti / traduit / compilé à une classe Servlet
autonome. Tous les tags seront convertis en code Java « réel » / méthodes. Si vous ne déclarez pas taglib, le compilateur JSP ne sais pas ce code Java / méthodes qu'il a besoin de générer / appel pour les balises particulières.
En cas de Tomcat par exemple, jetez un oeil dans le dossier /work
pour tous les JSP compilés de. Voir leur source et ce sera clair.
Autres conseils
<jsp:include page="/jsp/common_head.jsp"/>
... tag est une dynamique comprennent ce qui signifie qu'elle appelle dynamiquement la page common_head.jsp, qui est compilé indépendamment de la page, y compris. Ainsi, la directive taglib devrait être nécessaire.
Si, d'autre part, vous deviez faire une statique comprenant l'utilisation du include directive
<%@ include file="/jsp/common_head.jsp" %>
... le fichier aurait été collé copie et et compilé avec la page à partir de laquelle il est inclus. Ensuite, la directive taglib ne devrait pas être nécessaire.
Dans tous les cas, vous pouvez avoir le taglib inclus juste pour obtenir de l'aide de l'éditeur des balises que vous utilisez au cours du développement.
Notez que les fichiers statiques sont statiquement inclus, même avec le jsp: include balise
comprennent la directive: http: //java.sun. com / products / jsp / syntaxe / 1.2 / syntaxref129.html # 997991
jsp comprennent: http://java.sun.com/ produits / jsp / syntaxe / 1.2 / syntaxref1214.html
Comme vous incluez une ressource dynamique, cette ressource est « autonome » il devrait donc inclure une bibliothèque de balises que vous utilisez. Autre question est de savoir si vous utilisez ces balises ...
Oui, il est nécessaire pour la compilation JSP. Vous pouvez également utiliser ci-dessous taglib au lieu de c.tld.
<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c"%>
espère que cela aidera
Dans d'autres systèmes de modèle les définitions généralement reportées. Je ne vois pas pourquoi vous devriez avoir à l'utiliser à nouveau