JSP包含指令标记

时间:2016-01-16 09:07:19

标签: jsp jsp-tags jspinclude

JSP include指令标记:

据我了解,当您通过DIRECTIVE标记包含文件时,除非重新编译包含文件,否则不会处理包含文件中所做的任何更改。 但是当我在包含的文件中进行更改时,只需按下刷新就会显示更改!如果可以重新编译包含文件,怎么可能?更改不应该显示。

我刚刚对包含的文件进行了更改,保存了它,然后刷新了浏览器并显示了更改!

2 个答案:

答案 0 :(得分:1)

启用自动编译。它会检查文件的上次修改时间并进行编译。

答案 1 :(得分:1)

这实际上取决于您使用的应用程序服务器。

作为参考,JSP规范在JSP.1.10.3节中说明:

  

JSP容器可以包含一个机制,用于在收到通知时通知   包含文件更改,因此容器可以重新编译JSP页面。   但是,JSP 2.2规范没有指导方法   包含文件的JSP容器已更改。

如果您正在使用WebSphere Application Server,则默认情况下,如果仅更改了子(包含的jsp),则通过include指令的include不会导致重新编译父JSP。如果用户想要那种行为,那么他们就会设置" trackDependencies" JSP属性为" true"在应用程序的WEB-INF / ibm-web-ext.xml文件中,默认为false。

如果您正在使用Tomcat,那么我相信当您使用Jasper 2在开发模式(默认)下运行时,这是预期的行为。
Tomcat文档在这里: http://tomcat.apache.org/tomcat-8.0-doc/jasper-howto.html 声明:

  

包含页面更改时重新编译JSP - Jasper 2现在可以检测到   当编译时从JSP中包含的页面发生了更改,然后   重新编译父JSP。

如果你想关闭那个行为,那么我相信你需要将开发设置为false tomcat_home / conf / web.xml文件,就像这样(在文件的jsp部分):

<init-param>
 <param-name>development</param-name>
 <param-value>false</param-value>
</init-param>