Em JSP é necessário redeclare bibliotecas de tags em arquivos incluídos?
Pergunta
Eu não estou muito familiarizado com como isso funciona na JSP
mas no
main.jsp modelo lá é esta:
<%@ taglib uri="/WEB-INF/tld/c.tld" prefix="c" %>
<jsp:include page="/jsp/common_head.jsp"/>
, em seguida, em common_head.jsp temos isso de novo:
<%@ taglib uri="/WEB-INF/tld/c.tld" prefix="c" %>
é necessário?
ou em outras palavras
Você declarações taglib propagadas para incluir arquivos?
Solução
Sim, isso é necessário. Antes executado pela primeira vez, cada arquivo JSP serão individualmente convertidos / traduzida / compilado para uma classe independente Servlet
. Todas as tags será traduzido para "reais" código Java / métodos. Se você não declarar uma taglib, então o compilador JSP não sei o código Java / métodos que precisa gerar / call para as tags específicas.
No caso de, por exemplo, Tomcat, dê uma olhada na pasta /work
para todos aqueles compilados JSP. Ver sua fonte e tudo estará claro.
Outras dicas
O
<jsp:include page="/jsp/common_head.jsp"/>
... tag é uma dinâmica incluem o que significa que dinamicamente chama a página common_head.jsp, que é compilado independentemente da página, incluindo. Assim deve ser necessária a diretiva taglib.
Se, por outro lado você fosse fazer uma estática incluem usando o incluem directiva
<%@ include file="/jsp/common_head.jsp" %>
... o arquivo teria sido copiar-colar e e compilado com a página da qual ele está incluído. Então não deve ser necessária a diretiva taglib.
Em qualquer caso, você pode querer ter o taglib incluído apenas para obter apoio editor de tags que você usa durante o desenvolvimento.
Note que os arquivos estáticos são estaticamente incluídos, mesmo com o jsp: incluir tag
incluem directiva: http: //java.sun. com / products / jsp / sintaxe / 1.2 / syntaxref129.html # 997991
jsp incluem: http://java.sun.com/ produtos / jsp / sintaxe / 1.2 / syntaxref1214.html
Como você está incluindo um recurso dinâmico, esse recurso é "independente" por isso deve incluir qualquer biblioteca de tags que você está usando. Outra questão é se você estiver usando as tags ...
Sim, é necessário para compilação JSP. Você também pode usar abaixo taglib em vez de c.tld.
<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c"%>
espero que isso vai ajudar
Em outros sistemas modelo as definições normalmente transitadas. Eu não vejo por que você deve ter para usá-lo novamente