题
我不是真正熟悉是如何工作的JSP
但在
main.jsp中模板有这样的:
<%@ taglib uri="/WEB-INF/tld/c.tld" prefix="c" %>
<jsp:include page="/jsp/common_head.jsp"/>
然后在common_head.jsp我们再有这样的:
<%@ taglib uri="/WEB-INF/tld/c.tld" prefix="c" %>
这个必要吗?
或者换句话说
<强>是否标记库声明传播到包含文件吗
解决方案
是,这是必要的。首次执行之前,每个JSP文件会被单独转换/转换/编译成一个独立的Servlet
类。所有的标签将被转换为“真正的” Java代码/方法。如果你不声明标签库,那么JSP编译器不知道是什么的Java代码/方法也需要生成/呼吁特定的标签。
在的例如Tomcat的情况下,采取在/work
夹一看,所有这些编译JSP的的。查看其来源,这将是所有清楚。
其他提示
在
<jsp:include page="/jsp/common_head.jsp"/>
...标签是一个动态的包括这意味着它动态地调用common_head.jsp页,其被独立地编译包括页面的。因此应所需的taglib指令。
如果,在另一方面,你是做静态包括使用包括指令
<%@ include file="/jsp/common_head.jsp" %>
...该文件将一直复制粘贴并与其所包含的页面编译。然后不应该需要taglib指令。
在任何情况下,你可能需要有包括刚刚的taglib让编辑器支持开发过程中使用的标签。
请注意静态文件是静态包括在内,即使将jsp:include标签
包括指令: HTTP://java.sun。 COM /产品/ JSP /语法/ 1.2 / syntaxref129.html#997991
JSP包括: http://java.sun.com/产品/ JSP /语法/ 1.2 / syntaxref1214.html
随着你,包括一个动态资源,该资源是“独立的”,所以它应该包括您正在使用任何标签库。另一个问题是,如果你使用这些标签...
是它需要JSP编译。 还可以使用下面的taglib代替c.tld。
<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c"%>
希望这将有助于
在其它模板系统的定义通常结转。我不明白,你为什么要再次使用它