【发布时间】:2013-11-30 14:22:30
【问题描述】:
我需要在 JSP 中包含内容不使用包含指令。
用<%@include file="includeMe.htm" %> 做一个服务器端包含很容易,但是includeMe.htm 的内容被添加到JSP 在 JSP 被容器转换为Servlet 之前。这意味着如果 includeMe.htm 被修改,更改不会反映在生成的.java Servlet 文件中。我已经厌倦了进入 Tomcats 生成的文件目录手动删除生成的 java 和 class 文件,或者每次包含的文件更改时重新部署我的应用程序。
我是否需要编写一个代码块来逐行从文本文件中读取数据然后这样写?
<%
while( not done reading from file ) {
String line = scanner.nextLine();
response.getWriter().println(line);
} %>
有没有更简单或更清洁的方法?
【问题讨论】:
-
您可以将
.tag文件用于可重复使用的内容,也可以使用<jsp:include>(INCLUDE 调度)。但是Tomcat应该能够重新编译具有此类依赖项的JSP AFAIK ...也许是因为您使用了不正确的扩展名。尝试改用.jspf(JSP 片段)。 -
正如我所想,Tomcat 应该能够处理包含片段中的更改 - tomcat.apache.org/tomcat-7.0-doc/jasper-howto.html(检查包含页面更改时重新编译 JSP)。
-
如果您想在运行时包含 includeMe.htm 的内容而不是编译团队,那么请使用 jsp include 而不是 @include。它是否解决了您的问题?
-
@Pavel 出于某种原因,我认为这个简单的解决方案不起作用,因为未修改随附的 jsp 页面。请将您的评论更改为答案,以便其他人在搜索时更容易找到。
-
也许这是Tomcat的一个新特性。例如,下面的链接描述了我的假设:javapapers.com/jsp/… 不管怎样,我猜
<jsp:include>会起作用。