在另一个JSP文件中包含一个JSP文件并修改父HEAD或BODY?

时间:2015-07-09 12:19:32

标签: javascript html spring jsp

使用: Apache Tomcat 6 Spring 4.0

我们说我有一个孩子"包含指向外部javascript文件的链接的JSP文件:    

然后我将child.jsp包含在我父JSP文件的中间,生成的HTML将类似于下面的内容:

<html>
<head></head>
<body>
<lotsOfHTML>
<!-- start injected JSP -->
<injectedHTML>
  <script src="my-external-file.js"></script>
<!-- end injected JSP -->
<evenMoreHTML>
</body>
</html>

我想要的是:

<html>
<head></head>
<body>
<lotsOfHTML>
<!-- start injected JSP -->
<injectedHTML>
<!-- end injected JSP -->
<evenMoreHTML>
  <script src="my-external-file.js"></script>  <-- Injected Javascript
</body>
</html>

澄清:

这就是我的JSP的样子:

index.jsp include1.jsp indclude2.jsp

index.jsp具有页面的内容,如标题等。 include1.jsp和include2.jsp包含我希望在我的页面上重用的小部件和其他组件之类的东西。这包括CSS和JavaScript库。

默认情况下,任何包含的外部CSS和JavaScript引用都将包含在页面中间。 我希望JavaScript库出现在包含includeX.jsp的页面底部。

我怎样才能做到这一点? 最坏的情况(?)是将JavaScript文件包含在HEAD中,但最好是在BODY标记的底部。

谢谢!

/ J

1 个答案:

答案 0 :(得分:3)

这可以使用JSP标记文件来完成。例如:

<强>的index.jsp

<%@ taglib prefix="my-tags" tagdir="/WEB-INF/tags" %>
<html>
    <head>
        <!-- Stuff goes here -->
    </head>
    <body>
       <!-- Content goes here -->
       <my-tags:javascript />
    </body>
</html>

<强> javascript.tag

<%@tag description="JavaScript libraries for all pages." pageEncoding="UTF-8"%>
<script type="text/javascript" src="/static/jquery.js"></script>

当Tomcat将index.jsp处理成HTML时,标记文件的内容将被注入JSP。如果您不希望将JS注入页面,也可以将标记引用包装在条件EL评估中。