我不是真正熟悉是如何工作的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"%>

希望这将有助于

在其它模板系统的定义通常结转。我不明白,你为什么要再次使用它

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top