Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何避免在包含的JSP文件中重新声明标记库?_Java_Jsp_Include_Jstl - Fatal编程技术网

Java 如何避免在包含的JSP文件中重新声明标记库?

Java 如何避免在包含的JSP文件中重新声明标记库?,java,jsp,include,jstl,Java,Jsp,Include,Jstl,我为我的webapp中的所有JSP制作了一个模板,使事情变得非常简单: <%@ include file="header.jsp" %> <!-- Put unique content here --> <%@ include file="footer.jsp" %> 我决定将导航菜单从header.jsp移到它自己的文件中,因为它越来越大。我将菜单的代码放入menu.jsp中。以下是include在我的header.jsp: <html>

我为我的webapp中的所有JSP制作了一个模板,使事情变得非常简单:

<%@ include file="header.jsp" %>

<!-- Put unique content here -->

<%@ include file="footer.jsp" %>

我决定将导航菜单从header.jsp移到它自己的文件中,因为它越来越大。我将菜单的代码放入menu.jsp中。以下是include在我的header.jsp:

<html>
<head>
    <title>My JSP</title>
</head>

    <body>

        <jsp:include page = "menu.jsp"/>

 ......

我的JSP
......
但是,menu.jsp将不起作用,除非我也将这一行放在其中:

<%@ taglib prefix = "c" uri = "http://java.sun.com/jsp/jstl/core"%>

这已经在我的header.jsp中了。我只想把它放在那里。但是,当我尝试使用此sytax时:

<%@ include file="menu.jsp" %>

我从WebLogic 11g收到一条错误消息,指出

<%@ include file="header.jsp" %> is self refrencing
是自引用的
如何在header.jsp中包含menu.jsp而不必在menu.jsp中包含JSTL?

动态包含的jsp页面(
)如果使用taglib,则必须具有taglib声明,因为它是单独编译的

静态包含的JSP页面没有相同的限制,因为它被编译到servlet本身中

在使用标记库的JSP中声明标记库有什么大不了的?这使得它成为一个独立的“块”功能,可以在任何地方动态包含,自文档化,而不必担心包含它的页面:这是分解功能的目标。

动态包含的JSP页面(
)如果使用taglib,则必须具有taglib声明,因为它是单独编译的

静态包含的JSP页面没有相同的限制,因为它被编译到servlet本身中


在使用标记库的JSP中声明标记库有什么大不了的?这使得它成为一个独立的功能“块”,可以动态地包含在任何地方,自我记录,而不必担心它所包含的页面:这是分解功能的目标。

也许可以改为包含页面源代码的指令
,试试标准动作
或JSTL
,它只包括页面的动态响应,而不包括页面的代码。

也许可以改为包含页面源代码的指令
,试试标准动作
或JSTL
,它只包括页面的动态响应,而不包括页面的代码。

我没有那样看它。我的心态是尽量少重复。我还想知道我的解决方案是否“走错了路”@Steve这是Java,你注定要重复;)使用dynamic includes还可以实现真正简单的模板制作,而无需Tiles/SiteMesh/等的复杂性。虽然功耗较低,但通常已经足够了。LOL。我在学春天。AOP给我留下了深刻的印象,其他“新东西”(对我来说)减少了很多代码。@Steve AOP是一个非常棒的工具,使用得当。Spring的TX管理等功能非常适合AOP。AOP非常容易被滥用。。。但是很有趣,我不是这么看的。我的心态是尽量少重复。我还想知道我的解决方案是否“走错了路”@Steve这是Java,你注定要重复;)使用dynamic includes还可以实现真正简单的模板制作,而无需Tiles/SiteMesh/等的复杂性。虽然功耗较低,但通常已经足够了。LOL。我在学春天。AOP给我留下了深刻的印象,其他“新东西”(对我来说)减少了很多代码。@Steve AOP是一个非常棒的工具,使用得当。Spring的TX管理等功能非常适合AOP。AOP非常容易被滥用。。。但是很有趣。