JSP include指令标记:
据我了解,当您通过DIRECTIVE标记包含文件时,除非重新编译包含文件,否则不会处理包含文件中所做的任何更改。 但是当我在包含的文件中进行更改时,只需按下刷新就会显示更改!如果可以重新编译包含文件,怎么可能?更改不应该显示。
我刚刚对包含的文件进行了更改,保存了它,然后刷新了浏览器并显示了更改!
答案 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>